在ajax中运行javascript外部链接甚至内部链接

run javascript external link and even internal in ajax

本文关键字:链接 内部 外部 javascript ajax 运行      更新时间:2023-09-26

在ajaxed页面中有多少种方法可以执行javascrpit代码?内部和外部。。。我真的需要执行我的脚本,但没有找到实现目标的方法我尝试了循环求值&getscript方法等。。。但没有结果有真正的方法来执行我的脚本吗?我正在使用加载功能加载我的页面,请帮助我
我有谷歌地图,它以通常的方式工作,但当我使用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;
});

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

如果您将$.load与登录页片段(即后面跟着#id的URL)一起使用,那么任何脚本标记都将被删除,而不会执行。请参阅$.load文档的脚本执行部分。

Psuedo代码-"正确"的方式应该是这样的:

$('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;
});

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

我试过循环eval这真的应该有效,你能发布你使用的代码吗?

您可以使用eval()函数从另一个源运行javascript。

即:

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

会显示一个信息你好世界。

我想说您的问题是由同源策略引起的

它甚至在$.load 的文档中被提及

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

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

阻止跨来源请求:同源策略禁止读取位于的远程资源https://maps.google.com.(原因:CORS标头缺少"Access Control Allow Origin")。