我在我的 HTML 头中链接了一个服务器端生成的 JS 文件。
我使用它,以便能够从我的 PHP 脚本中的任何位置动态地将脚本插入到 head 标记中。
有一个全局可访问对象,我可以传递 JS 代码,然后它使用密钥将其存储在会话中,将密钥插入 HTML 框架模板,然后浏览器通过加载从会话输出它的动态脚本来加载存储的脚本贮存。
这在 Firefox、Chrome 甚至 IE 中都可以正常工作,但在 Opera 中则不行。
在 Opera 中,从大约 10 次重新加载尝试中,只有 1 次尝试执行脚本。
目前所有动态生成的 JS 代码都在 jQuery DOM Ready 事件中。这可能与我认为的问题有关。
使用 AJAX 加载动态脚本并对其进行评估肯定会解决这个问题,但我想要一个清晰的 HTML 输出,而不是直接在头上的脚本。这种加载和评估的方式对于链接的静态脚本是不可能的,因为模板引擎必须将脚本的会话存储密钥插入到 HTML 框架模板中。
---编辑---动态脚本输出:
$(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 多次请求外部脚本。有关更多详细信息,请参阅我的最后评论。顺便说一句,如果是这样的话,在某些情况和情况下,带宽使用也非常令人担忧。