比方说,我有一些简单的Javascript,如:是否可以执行使用pjax检索的Javascript代码?
<script>
var hello = function(){
alert("Hello World!");
}
</script>
..上一个页面的helloworld.html。如果我使用Pjax将此脚本块加载到另一个页面中。我如何执行函数hello()?
比方说,我有一些简单的Javascript,如:是否可以执行使用pjax检索的Javascript代码?
<script>
var hello = function(){
alert("Hello World!");
}
</script>
..上一个页面的helloworld.html。如果我使用Pjax将此脚本块加载到另一个页面中。我如何执行函数hello()?
出于安全原因,许多浏览器不会运行由innerHTML
注入的Javascript,我认为这是Pjax可能使用的。 (Here's a minimal example.)
也许在Pjax's issue #48提出的解决方案将帮助
什么工作对我来说是放在一个功能我jQuery代码,把它 常开的document.ready(非pushState的浏览器),和然后绑定 的功能pjax:端,即:
$('body').bind 'pjax:end', mainFunction
该解决方案似乎指的是“没有办法在'后退按钮'触发器上调用pjax成功处理程序”。 – Sam
这是可能与pJAX。您只需要使用text/javascript
类型的脚本标记。从PJAX库
代码:
function executeScriptTags(scripts) {
if (!scripts) return
var existingScripts = $('script[src]')
scripts.each(function() {
var src = this.src
var matchedScripts = existingScripts.filter(function() {
return this.src === src
})
if (matchedScripts.length) {
matchedScripts.remove();
}
console.error("FOUND SCRIPTS", scripts, matchedScripts.length);
var script = document.createElement('script')
script.type = $(this).attr('type')
script.src = $(this).attr('src')
document.head.appendChild(script)
})
}
那么,如果你检索到了AJAX(其中,本质上,是PJAX是什么)并将其插入到你的DOM,脚本标签将执行上注射。你是这个意思吗? – Utkanos
@Utkanos我已经尝试将脚本块插入到DOM中,但它似乎并未执行。 – Sam
您将块作为HTML插入,而不是文本,对不对?前者应该肯定会执行 - 对我来说。 – Utkanos