Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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
AJAX';脚本类型设置为“时,ed JS组件不工作”;应用程序/javascript“;_Javascript_Jquery_Html_Ajax - Fatal编程技术网

AJAX';脚本类型设置为“时,ed JS组件不工作”;应用程序/javascript“;

AJAX';脚本类型设置为“时,ed JS组件不工作”;应用程序/javascript“;,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在使用AJAX提取一些带有嵌入式JS脚本的HTML组件。拉取的内容只有正文标记,用于替换当前页面的正文。替换主体后,如果脚本类型设置为application/javascript,则新的JS代码将不起作用。但如果类型为空或“text/javascript”,则它可以正常工作 这是我的密码 index.html 函数makeAjaxCall(第页){ $.get(页面,函数(数据){ 控制台日志(数据); $(“body”).html(数据); }); } 这是HTML1 使用AJAX拉取页

我正在使用AJAX提取一些带有嵌入式
JS
脚本的HTML组件。拉取的内容只有
正文
标记,用于替换当前页面的
正文
。替换主体后,如果脚本类型设置为
application/javascript
,则新的
JS
代码将不起作用。但如果类型为空或“text/javascript”,则它可以正常工作

这是我的密码

index.html


函数makeAjaxCall(第页){
$.get(页面,函数(数据){
控制台日志(数据);
$(“body”).html(数据);
});
}
这是HTML1
使用AJAX拉取页面。页面包含没有类型属性的脚本组件
使用AJAX拉取页面。该页面包含类型为application/javascript的脚本组件
使用AJAX拉取页面。该页面包含类型为text/javascript的脚本组件

页面2.html


函数A(){
警报('horrayyy!!!JS按预期工作');
}
这是一个在脚本标记中没有类型属性的页面。在AJAX之后,pull-JS将起作用
检查JS是否工作。答:会的

页面3.html


函数B(){
警报('horrayyy!!!JS按预期工作');
}
这是一个脚本类型设置为“application/javascript”的页面。在AJAX拉取之后,JS将无法工作
检查JS是否工作。答:不会的

page4.html


函数C(){
警报('horrayyy!!!JS按预期工作');
}
这是一个脚本类型设置为“text/javascript”的页面。在AJAX拉取之后,JS将工作
检查JS是否工作。答:会的


奇怪的是,type属性在这里是如何起作用的

在jQuery 1.7.1中,在返回的HTML中查找脚本的代码说:

if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") )
因此,如果没有类型或类型特别是
text/JavaScript
,它只将
作为JavaScript处理


在以后的版本中,
text/javascript
的显式检查已被删除(我查看了1.9.1,但现在已经不存在了)。因此,如果升级到新版本,问题应该会消失。

您使用的是一个非常旧的jQuery版本。我刚刚比较了1.7.1和1.9.1中的代码,专门检查
text/javascript
的部分在新版本中消失了。@Teemu这不是真正相关的,因为这不是一个javascript文件,它是HTML文件中的
元素。JavaScript元素甚至不需要
类型
属性,它是默认值。
<body>
<script>
    function A() {
        alert('Horrayyyy!!! JS working as expected');
    }
</script>
This is a page with no type attribute in script tag. After AJAX pull JS will work. <br/>
<button onclick="A()"> Check if JS works. Ans: It will</button>
<body>
<script type="application/javascript">
    function B() {
        alert('Horrayyyy!!! JS working as expected');
    }
</script>
This is a page with script type set to "application/javascript". After AJAX pull, JS will not work. <br/>
<button onclick="B()"> Check if JS works. Ans: It won't </button>
<body>
<script type="text/javascript">
    function C() {
        alert('Horrayyyy!!! JS working as expected');
    }
</script>
This is a page with script type set to "text/javascript". After AJAX pull, JS will work. <br/>
<button onclick="C()"> Check if JS works. Ans: It will </button>
if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") )