Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用脚本标记的jQuery_Javascript_Jquery_Dom_Load - Fatal编程技术网

Javascript 使用脚本标记的jQuery

Javascript 使用脚本标记的jQuery,javascript,jquery,dom,load,Javascript,Jquery,Dom,Load,为什么加载dom时,脚本标记在那里,但它没有执行?假设我有这个代码 History.Adapter.bind(window, 'statechange', function(e) { // Note: We are using statechange instead of popstate var State = History.getState(); $('#main-content').load(State.url + " #main-content");

为什么加载dom时,脚本标记在那里,但它没有执行?假设我有这个代码

History.Adapter.bind(window, 'statechange', function(e) { // Note: We are using statechange instead of popstate
        var State = History.getState();
        $('#main-content').load(State.url + " #main-content");
    });
我将从给定的url加载“#main content”的内容。给定的url和该url包含以下内容

<div id = "main-content">
<script>
$(document).ready(function(){
  console.log($('audio'));
})
</script>
</div>

$(文档).ready(函数(){
log($('audio');
})
为什么它没有在控制台中显示音频?

如上所述,以这种方式加载的脚本可能无法执行有几个原因

在本例中,您使用带后缀的选择器表达式仅将提取内容的一部分插入到当前文档中。这样做的缺点是,在将内容的任何部分实际插入文档之前,脚本将从内容中剥离

jQuery加载方法的源代码(v1.9.1)中提到了排除脚本的原因

//如果指定了选择器,请在虚拟div中找到正确的元素

//排除脚本以避免IE“权限被拒绝”错误

如果可能的话,我将通过让服务器只响应“main content”div(可能由附加到初始URL的查询字符串触发)来解决这个问题,并在不使用选择器的情况下加载它

根据某些条件仅返回文档的一部分完全取决于生成文档的服务器端应用程序(如果有的话)。例如,如果您正在使用PHP,请将脚本更改为调用
load(State.url+“?section=main content”)
,然后让PHP检查
$\u GET['section']
是否等于'main content'。在这种情况下,跳过渲染除要更新的div之外的所有内容。对于这一部分,我无法给出更详细的答案,因为这取决于您在服务器上运行的内容

如果您提供的是静态文件,而主机不运行PHP或其他语言,那么 听到其他人建议先将整个文档加载到iFrame中(在
load()
调用中不包含
#main content
部分),然后使用纯JavaScript提取您希望在主文档中更新的片段。它可能适用于您的情况,但您的脚本很可能会执行两次。首先在iFrame的上下文中执行加载文档的所有脚本部分,然后在插入主文档时再次执行提取部分的脚本部分

如果您提供的是静态文件,但主机确实运行PHP或其他语言,那么可以编写一个小脚本,只提取您需要的文档部分。这样的脚本可以基于,但可以修改为从GET/query参数获取XHTML文件的路径。这需要将加载调用更改为类似于
load(“path/to/extraction\u script.php?filename=“+escape(State.url)+”§ion=main content”)
的内容,以便将以前访问过的页面的整个路径发送到服务器


注意:这样做可能会打开主要的安全漏洞,因为您实际上是在创建一个代理服务器,该服务器能够读取它可以访问的服务器上的任何文件,包括外部URL,除非您非常小心。我不推荐这种方法,我也无法测试它在实践中是否有效。这取决于您的服务器配置和文档的外观。

我该怎么做?@user962206这有点太具体了,我无法准确回答,但我已经用一些关于该主题的一般信息更新了答案。