Mobilebone.evalScript
是否执行Ajax请求的HTML字符串中的内联script脚本。此为全局设置,影响整个页面。默认为false
.
值类型
布尔值。设置为true
或false
.
使用
Mobilebone.evalScript = true;
效果
Ajax请求的HTML字符串中内联的script脚本会执行。
其他说明
- 只会执行内联JS脚本,
src
外链JS忽略。如下面会执行:<script>console.log("script excuted!");</script>
但是下面这个1.js会忽略:
<script src="1.js"></script>
如果你需要外链JS执行,可以使用内联JS做处理,例如:
var script = document.createElement("script"); script.src = "a.js"; document.body.appendChild(script);
- 关于脚本执行的时机。内联JavaScript在页面即将载入的一瞬间就会进行。注意,此时可能存在两个结构和ID均一致的页面,例如,从分页1页面切换到分页2页面,此时,例如,给某元素绑定事件,例如:
document.getElementById("test").addEventListener("click", function() { console.log("clicked!"); });
则,绑定的事件可能在之前一个元素上。然后造成新页面元素没事件,之前页面元素重复绑定。
避免此问题方法很多(测试页面
/test/ajax-html/index.html
均有示意):- 加一个延迟,例如350毫秒。
- 使用Mobilebone内置回调方法,例如
animationend
, 或者onpagefirstinto
的参数限制(如下):var fun_firstinto = function(pagein) { pagein.querySelector("#test").addEventListener("click", function() { console.log("clicked!"); }); }
这样,事件就准确绑定在对应页面元素上了!
-
或者使用动态id,如:
id="test<?php echo $_GET['id']; ?> document.getElementById("test<?php echo $_GET['id']; ?>")