AJAX';脚本类型设置为“时,ed JS组件不工作”;应用程序/javascript“;
我正在使用AJAX提取一些带有嵌入式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拉取页
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") )