运行 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).
在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).