在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;
});
答案 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”缺失。)