我在HTML头中链接了一个服务器端生成的JS文件。
我使用它,能够从PHP脚本中的任何位置动态插入脚本到头标记。
我可以传递JS代码的全局可访问对象,然后使用密钥将其存储在会话中,将密钥插入HTML框架模板,然后浏览器通过加载输出它的动态脚本来加载存储的脚本来自会话存储。
这在Firefox,Chrome甚至IE中都可以正常使用,但在Opera中则不行。
在Opera中,从大约10次重新加载尝试开始,只有1次尝试才能执行脚本。
目前,所有动态生成的JS代码都在jQuery DOM Ready事件中。这可能与我认为的问题有关。
使用AJAX加载动态脚本并对其进行评估肯定会解决这个问题,但我想要一个清晰的HTML输出,而不需要直接的脚本。这种加载和评估方式不可能来自链接的静态脚本,因为模板引擎必须将脚本的会话存储密钥插入到HTML框架模板中。
--- --- EDIT 动态脚本输出:
$(function(){
//Calls to some jQuery Plugins on class and id selectors (on some reloads getting executed, but mostly not)
});
DOM:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- CSS Links, Meta tags -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<!--jQuery Plugins External Script tags-->
<script src="http://[MY_DOMAIN]/dynamic.js/[JS_STORAGE_KEY(MD5)]"></script>
</head>
<body>
<!-- VALID HTML5 CODE -->
</body>
</html>
---编辑2 --- 我可能找到了问题的原因: Opera不止一次地请求外部脚本。有关详细信息,请参阅我的上一条评 顺便说一下,如果是这种情况,那么在某些情况和情况下,它对带宽使用也非常关注。