运行 javascript 外部 link 甚至内部 ajax

run javascript external link and even internal in ajax

在ajax页面中执行javascrpit代码有多少种方式? 内部和外部... 我真的需要执行我的脚本,但找不到实现目标的方法 我在循环和 getscript 方法等中尝试了 eval ...但没有结果 有没有真正的方法来执行我的脚本? 我正在使用加载功能加载我的页面,请帮助我
我有 google 映射它以通常的方式工作但是当我使用 ajax 加载它时,它不会工作 这是我的代码

$('ul li a').on("click",function() {
    var link = $(this).attr("href") + " #contentx";
    $('#contentx').fadeOut('slow', function(){
        $('#contentx').load(link, function(){     
            $("#mapjs").each(function(i) {
                eval($(this).text());
            });
            $('#contentx').fadeIn('slow');
        });
    });
    return false;
});

i tried eval in a loop This really should work, could you post the code that you used?

您可以使用 eval() 函数 运行 javascript 来自其他来源。

即:

eval("alert(\"hello world\")");

将显示消息 hello world。

您需要将您的 JS 块 (<script id="mapjs">...</script>) 移动到它自己的专用文件中。

如果您将 $.load 与着陆页片段一起使用(即 URL 后跟 #id),那么所有脚本标签都将被删除,并且不会执行。请参阅 $.load documentation 的脚本执行部分。

伪代码 - 'proper' 方式是这样的:

$('ul li a').on("click",function() {
    var link = $(this).attr("href") + " #contentx";
    $('#contentx').fadeOut('slow', function(){
        $('#contentx').load(link, function(){
            if($(this).attr('href') == 'http://wearesevil.com/?page_id=16'){     
                $.getScript('/map.js', function(){
                    $("#mapjs").each(function(i) {
                        eval($(this).text());
                    });
                });
            }
            $('#contentx').fadeIn('slow');
        });
    });
    return false;
});

'hacky' 方式?您可以将 <script id="mapjs"> 更改为 <div id="mapjs" style="display:none;">...</div>。这不会从 DOM 中删除,您可以在文本上使用 eval()

我会说你的问题是由same origin policy

引起的

它甚至在 documentation 中提到 $.load

您可以简单地检查 Firefox 中的调试控制台或 Chrome 以获取相关的错误消息。

例如在 Firefox 中会报告如下内容:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://maps.google.com. (Reason: CORS header 'Access-Control-Allow-Origin' missing).