加载这个 js 数组我做错了什么


What am I doing wrong loading this js array?

我添加了另一个问题,专门关于我认为这里的问题是什么,但我认为更多的细节会有所帮助。所以,这是我的代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Prueba jQuery no event</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="loadUrls.php"></script>
<script type="text/javascript">
jQuery(document).ready(function() { 
    jQuery("a").click(function(ev) {
        //ev.preventDefault();
        // Defino las variables
        var currentAnchor = jQuery(this);
        var currentHref = currentAnchor.attr('href');
        var curHref = currentHref.split('/');
        var curHrefFinal = curHref[2].replace('www.', '');
        if(jQuery.inArray(curHrefFinal,urlsFinal) > -1) {
            // Evito que se visite el link directo
            ev.preventDefault();
            if (ev.metaKey || ev.ctrlKey) {
                // Redirecciono el navegador a la página que queremos
                window.open(currentHref + "?a=esta-funcionando-tambien");
            } else {
                // Redirecciono el navegador a la página que queremos
                window.location = currentHref + "?a=esta-funcionando";
            };
        };
    });
});
</script>
</head>
<body>
<p>Hola, <a href="http://www.avantrip.com">este es</a> un link.</p>
<p>Hola, <a href="http://espana.aula365.com/es/">este es</a> otro link.</p>
<p>Hola, <a href="http://stackoverflow.com">este es</a> otro link.</p>
<p>Hola, <a href="http://www.airborn.com.ar">este es</a> otro link.</p>
</body>
</html>

加载网址.php 文件正在输出:

jQuery(document).ready(function() { 
    var urlsFinal = [
        "avantrip.com.ar",
        "avantrip.com",
        "espana.aula365.com",
        "almashopping.com",
        "airborn.com.ar",
        "1and1.mx",
        "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
    ];
});

基本上,我将单击的所有链接的 href 属性与从 SQL 数据库动态生成的数组进行比较。此数组需要托管在外部文件中,因此是 loadUrls.php 文件。

由于某种原因,urlsFinal var 在主代码中无法识别。如果我复制数组并将其粘贴到主文件中,则其余部分可以正常工作。我找不到任何问题,但我相信你会的。

有什么想法吗?

谢谢!

您已经为变量创建了一个局部作用域 - 您应该将其放入全局作用域,方法是loadUrls.php简单地编写脚本(不带$(document).ready包装器):

var urlsFinal = [
    "avantrip.com.ar",
    "avantrip.com",
    "espana.aula365.com",
    "almashopping.com",
    "airborn.com.ar",
    "1and1.mx",
    "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
];

将其添加到全局范围的另一种方法(如果说您出于其他原因需要$(document).ready闭包)是使用 window.urlsFinal = [ ... ]

您需要

在全局空间中定义urlsFinal。有两种方法可以做到这一点。

方法 1:使用 window 变量:

jQuery(document).ready(function() { 
    var urlsFinal = [
        "avantrip.com.ar",
        "avantrip.com",
        "espana.aula365.com",
        "almashopping.com",
        "airborn.com.ar",
        "1and1.mx",
        "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
    ];
    window['urlsFinal'] = urlsFinal;
});

方法 2:在全局空间中声明变量,但在同一空间中初始化它。

var urlsFinal;
jQuery(document).ready(function() { 
    urlsFinal = [
        "avantrip.com.ar",
        "avantrip.com",
        "espana.aula365.com",
        "almashopping.com",
        "airborn.com.ar",
        "1and1.mx",
        "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com"
    ];
});