我的History.js/Ajaxify
脚本存在严重问题。主要问题是,在页面加载了history.js后(通过点击链接),<header>
标记中的其他javascript都没有被加载,实际上它就好像它们一样&# #39;已卸下。
为了解决这个问题,我决定用statechangecomplete
加载脚本,我在一段时间后意识到这只会导致更多问题。因为我不仅每次都会加载脚本 我点击一个链接,但在几页更改后,Chrome达到了100%的CPU使用率。
$(window).on('statechangecomplete', function() {
$.getScript(document.location.origin + "/js/myscript1.js");
$.getScript(document.location.origin + "/js/myscript2.js");
$.getScript(document.location.origin + "/js/myscript3.js");
});
同时我的<head>
包括:
<head>
<title>Example</title>
<meta charset="utf-8" />
<meta NAME="ROBOTS" CONTENT="NOODP">
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//balupton.github.io/jquery-scrollto/lib/jquery-scrollto.js"></script>
<script src="//browserstate.github.io/history.js/scripts/bundled/html4+html5/jquery.history.js"></script>
<script src="/js/ajaxify-html5.js"></script>
<script src="/js/uikit.min.js"></script>
<script src="https://unpkg.com/mithril/mithril.js"></script>
<script src="/js/myscript1.js"></script>
<script src="/js/myscript2.js"></script>
<script src="/js/myscript3.js"></script>
</head>
最奇怪的是,uikit.min.js
和mithril.js
在页面更改后都有效。在查看了他们的代码并将其与我的代码进行比较后,我开始怀疑为什么我的代码不能正常工作的原因是因为它们都包含$(document).ready(function({});
而mithril
}和uikit
没有。
最后,我想知道为什么它会导致我的脚本在页面更改/历史记录状态后不加载?
答案 0 :(得分:-2)
我发现了这个问题,对于任何与我有同样问题的人,我所做的就是删除
var result = String(html)
.replace(/<\!DOCTYPE[^>]*>/i, '')
.replace(/<(html|head|body|title|meta|script)([\s\>])/gi,'<div class="document-$1"$2')
.replace(/<\/(html|head|body|title|meta|script)\>/gi,'</div>')
;
return $.trim(result);
来自ajaxify-html5.js
。这将使它不会删除脚本标记等。