运行javascript外部链接甚至是ajax内部

时间:2015-11-03 11:16:50

标签: javascript jquery ajax eval getscript

在ajaxed页面中执行javascrpit代码的方法有多少? 内部和外部...... 我真的需要执行我的脚本但却找不到我的目标 我在循环中尝试了eval& 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;
});

3 个答案:

答案 0 :(得分:0)

  

我在循环中尝试了eval   这真的应该有用,你可以发布你使用的代码吗?

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

即:

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

会显示一条消息hello world。

答案 1 :(得分:0)

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

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

Psuedo-code - &#39;适当的&#39;方式将是这样的:

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

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

答案 2 :(得分:-1)

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

引起的

甚至在documentation中提到$ .load

您只需在Firefox或Chrome中查看调试控制台以获取相关错误消息。

例如在Firefox中会报告类似的内容:

  

阻止跨源请求:同源策略禁止读取   https://maps.google.com处的远程资源。 (原因:CORS标题   “Access-Control-Allow-Origin”缺失。)