使用Ratchet push.js库执行多个JS文件

Dan*_*ito 5 cordova phonegap-build ratchet-2 push.js

我正在开发一个带有棘轮2.0.2的Phonegap应用程序,使用push.js进行页面之间的转换.一切顺利,但几个小时前我偶然发现了这个:

包含JavaScript的脚本标记不会在使用push.js加载的页面上执行.如果要将事件处理程序附加到其他页面上的元素,则文档级事件委派是一种常见的解决方案.

经过更多的研究后,我发现了这一点:在用Ratchet\Push.js加载页面后执行自定义脚本

这几乎是我遇到的同样问题,但是我需要更进一步,因为我不仅要加载一个脚本,而且需要加载两个(以后可能更多),如何利用checkPage()加载多个脚本脚本?

var checkPage = function(){
    //Only run if twitter-widget exists on page
    if(document.getElementById('twitter-widget')) {
        loadTwitterFeed(document,"script","twitter-wjs");
    }
};

window.addEventListener('push', checkPage);
Run Code Online (Sandbox Code Playgroud)

Sch*_*lzy 6

更新:另见这个问题.

这是一个我尝试过的解决方案,它似乎工作正常,但我正在寻找一些关于这是否是最好的方法的反馈...请随意发表评论,我会根据需要进行更新.我知道这eval()很危险,但我不确定在这种情况下有多危险.

在你的索引\第一页发生在你的页面的底部,下面的脚本以外的的.contentDIV,以便它不会被覆盖push.js.

<script>
    window.addEventListener('push', function(){
        var scriptsList = document.querySelectorAll('script.js-custom');
        for(var i = 0; i < scriptsList.length; ++i) {
            eval(scriptsList[i].innerHTML);
        }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

然后,在任何其他通过加载的页面上push.js,只需给脚本一个类.js-custom.该脚本必须放在INSIDE.content股利.

<div class="content">
    ...
    <script class="js-custom">
         alert('I was executed!');
    </script>
</div>
Run Code Online (Sandbox Code Playgroud)

第一个脚本将找到并循环遍历任何类的<script>标签.js-custom并使用它来执行它的内容eval().