javascript – 如何获取嵌入在通过jquery load()方法检索的内容中的脚本?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何获取嵌入在通过jquery load()方法检索的内容中的脚本?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3425字,纯文字阅读大概需要5分钟。
内容图文
![javascript – 如何获取嵌入在通过jquery load()方法检索的内容中的脚本?](/upload/InfoBanner/zyjiaocheng/790/2a6cd864b8c642cdaa7617c67654d9d4.jpg)
我在S.O.上找到了其他几个问题. (以及一般的网络)大致提出同样的问题,但答案似乎总是建议构建代码的其他方法,以避免解决这个潜在问题的需要.
例如,许多人建议(并且我同意一个很好的建议)将您的代码放在jquery load方法的回调中,在调用页面而不是被调用页面上.但是我有一些可能出现在某些资源中的独特脚本,因此我不想为每次加载都这样做,也不一定知道这些脚本是什么.
这是一个测试设置,用于演示我正在尝试做什么.简短的总结是当我从main.htm加载partial.htm时,它的脚本不会触发.
main.htm中:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>main file</title>
</head>
<body>
<ul id="links">
<li><a href="somepage1.php">some page1</a></li>
<li><a href="somepage2.aspx">some page 2</a></li>
<li><a href="partial.htm">some other partial page</a></li>
</ul>
<div id="panel" style="display:none; padding:20px; background-color:#CCC;">
LOADED CONTENT WILL GO HERE
</div>
<script type="text/javascript" src="/path/to/jquery-1.3.2.min.js"> </script>
<script type="text/javascript">
$(function(){
$('#links a').click(function() {
var $panel = $('#panel');
$panel.show();
$panel.html('Please wait...');
var href = $(this).attr('href');
$('#panel').load(href + ' #content');
return false;
});
});
</script>
</body>
</html>
好的,这个页面上非常简单的功能.想象一下,还有更多链接,其中一些可能需要编写脚本,而其他链接则不需要.
这是partial.htm:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>partial file</title>
</head>
<body>
<div id="content">
<p>Hey, I am the partial file!</p>
<script type="text/javascript">
alert('I am some JS in the partial file! But sadly I do not execute...');
</script>
</div>
<div>
I am some other content on the page that won't be included by jquery.load()...
</div>
</body>
</html>
请注意我在partial.htm中的脚本不会触发.所以,我的问题仍然存在:如何解决这个问题,排除任何告诉我将其放在.load()方法的回调中的答案. (这可能是因为我可能不知道这些部分页面可能包含或需要哪些脚本!)
谢谢!
更新#1:
我想一个可接受的答案就是“你做不到”.但是,我想知道这是否确实如此.我还没有找到任何正式陈述的东西.
此外,当我之后使用firebug检查面板区域时,根本没有脚本元素.就像它被加载解析一样.
更新#2:
只有在将选择器用作href的一部分时,我才将其缩小为一个问题.加载整个“somepage.html”将执行脚本,但加载“somepage.html #someregion”则不会.
$panel.load('somepage.html'); // my script fires!
$panel.load('somepage.html #someregion'); // script does not fire
我将尝试寻找为什么在jquery源代码中可能出现这种情况……
解决方法:
好吧,这似乎是设计的.显然让IE变得快乐,我们其余的人都受苦了.这是jquery源代码中的相关代码:
// See if a selector was specified
self.html( selector ?
// Create a dummy div to hold the results
jQuery("<div/>")
// inject the contents of the document in, removing the scripts
// to avoid any 'Permission Denied' errors in IE
.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
// Locate the specified elements
.find(selector) :
// If not, just inject the full result
res.responseText );
我想知道,我是否可以修改jquery源代码以便以其他方式包含它们使IE变得快乐,而不仅仅是剥离脚本.我仍然没有在网上找到任何其他事情来讨论这件事,我敢肯定我不是唯一一个被这个难过的人?
内容总结
以上是互联网集市为您收集整理的javascript – 如何获取嵌入在通过jquery load()方法检索的内容中的脚本?全部内容,希望文章能够帮你解决javascript – 如何获取嵌入在通过jquery load()方法检索的内容中的脚本?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。