History.js加载其他脚本和极端CPU使用率问题

时间:2018-02-02 20:46:45

标签: javascript jquery browser-history

我的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.jsmithril.js在页面更改后都有效。在查看了他们的代码并将其与我的代码进行比较后,我开始怀疑为什么我的代码不能正常工作的原因是因为它们都包含$(document).ready(function({});mithril }和uikit没有。

最后,我想知道为什么它会导致我的脚本在页面更改/历史记录状态后不加载?

1 个答案:

答案 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。这将使它不会删除脚本标记等。