Php 使用jQuery.load剥离脚本
我认为这个问题以前没有被提出过,至少没有以我需要的方式得到回答。我正在使用jQuery的.load函数。我在加载页面片段时遇到问题 当使用以下内容时:Php 使用jQuery.load剥离脚本,php,javascript,jquery,html,load,Php,Javascript,Jquery,Html,Load,我认为这个问题以前没有被提出过,至少没有以我需要的方式得到回答。我正在使用jQuery的.load函数。我在加载页面片段时遇到问题 当使用以下内容时: $('#content').load('loadTest.html'); loadTest.html上的所有脚本都可以正常加载。但是,在像这样加载页面片段时: $('#content').load('loadTest.html #content'); 在更新DOM之前,将剥离脚本 该文件清楚地记录了以下内容: 注意:当使用不带后缀选择器表达式
$('#content').load('loadTest.html');
loadTest.html上的所有脚本都可以正常加载。但是,在像这样加载页面片段时:
$('#content').load('loadTest.html #content');
在更新DOM之前,将剥离脚本
该文件清楚地记录了以下内容:
注意:当使用不带后缀选择器表达式的URL调用.load()时,在删除脚本之前,内容将传递给.html()。这将在脚本块被丢弃之前执行它们。但是,如果使用附加到URL的选择器表达式调用.load(),则脚本将在更新DOM之前被剥离,这就是它们从未执行的原因。两种情况的示例如下所示:
我知道我可以从外部加载脚本,它可以在任何地方使用,但问题是,我使用的是一个页面范围的ajax系统,其中所有内容都是动态加载的。所以我并不真的想把我要写的每一个javascript函数(现在是100个)都放在外部文件中。特别是因为其中一些javascript函数是由从数据库加载的值生成的,我无法在.js文件中解释这些值
在更新DOM之前,是否有任何解决方案用于剥离脚本?我可以用某种方式手动加载它们吗?任何小小的例子都会对我有帮助。就像你说的那样。jQuery在仅执行该块之前提取该元素 您可以修改输出,让服务器以您需要的格式返回数据,或者只编写自己的数据。它将提取您需要的元素并将它们输出到DOM 未经测试,但它将沿着这条路线
$('#content').load('loadTest.html #content,script');
从内存来看,这更有效
$.get('loadTest.html',function(r){
var els = $(r).find('#content,script');
$('#content').html(els);
});
在你的评论之后,我想你可能会对类似的东西感兴趣。它有条件地加载脚本,我在一些较小的网站上使用它,当我需要在不同的子页面或用户交互上加载脚本和CSS时,只加载它们 在头部加载一次:
<script src="js/lazyload-min.js" type="text/javascript"></script>
也适用于CSS文件
这在您的情况下可能会有所帮助,但也可能会改变您的加载逻辑。在任何情况下,我认为通常情况下,您的服务器上应该有多个AJAX端点,它们只返回您请求的数据。否则事情会变得具体甚至棘手
与其说是一个真正的答案,不如说是一个评论。有什么好处?或者反过来说:你为什么不编写自己的加载函数来实现你想要的呢?@hakre因为整个网站都是ajax驱动的,我并不总是知道当点击链接时需要加载哪些javascript函数。我只是不知道如何手动将脚本放回去。加载已被剥离。
// Load a single JavaScript file and execute a callback when it finishes.
LazyLoad.js('http://example.com/foo.js', function () {
alert('foo.js has been loaded');
});