在ajax中运行javascript外部链接甚至内部链接
run javascript external link and even internal in ajax
在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")。
- 根据选项卡内部的文本链接中的哈希ID动态选择jqueryUI选项卡
- 从内部链接进入页面时,引导模式未打开
- Cordova包装应用程序内部链接加载在应用程序中,外部链接加载在浏览器中
- 谷歌分析跟踪内部链接不正常工作的事件
- 如何自动将页码添加到HTML页面上的所有内部链接
- 将内部链接分配给视差网站的不同部分
- iframe resizer内部的锚点链接不'不起作用
- url中没有id的内部链接
- 如何使用JS抓取页面以获取内部链接?它也必须递归地完成
- 在不增加分析跳出率的情况下,绑定网页上的内部链接以动态加载
- 将内联块元素居中,并在 td 内部使用链接
- 如何检测用户点击了内部或外部链接
- 基础标题手风琴上的内部链接
- 函数内部的超链接
- 用于获得“;两个不同的滚动速度“;在这个网站上?(请参阅内部链接)
- 指向“”的超链接;隐藏的“;jQuery Toggler内部的内容(特定的#id)
- 如何从指令链接内部为选择框设置选定值
- 如何根据链接内部状态更改列表项的颜色
- 从外部源加载链接内部模态
- 如果单击链接内部的元素,如何防止默认链接行为