在ajax页面中执行javascrpit代码有几种方式?
内部和外部...
我真的需要执行我的脚本,但找不到实现目标的方法
我在循环和 getscript 方法等中尝试了 eval ...但没有结果
有没有真正的方法来执行我的脚本?
我正在使用加载函数加载我的页面,请帮助我
我有 google map 它以通常的方式工作但是当我使用 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 block ( <script id="mapjs">...</script>
) 移动到它自己的专用文件中。
如果您使用 $.load
带有着陆页片段(即 URL 后跟#id),那么任何脚本标签都将被删除,并且不会被执行。请参阅 $.load documentation 的脚本执行部分.
伪代码——“正确”的方式应该是这样的:
$('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()
在文本上。
关于javascript - 在 ajax 中运行 javascript 外部链接甚至内部链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33497758/