因此,在GitHub的棘轮2.0.2文档中,我找到了以下语句。
包含JavaScript的脚本标记将不会在带有push.js的页面上执行。如果要将事件处理程序附加到其他页上的元素,则文档级事件委托是常见的解决方案。
有谁能准确地说明如何使自定义<script>在被Push.js加载后执行?
在我的第一页上,我有一个Table视图,有几个指向其他页面的链接,其中一个是指向第二个页面的链接,其中一个页面上有一个Twitter Feed小部件。
<li class="table-view-cell media">
<a class="navigate-right" href="Twitter.php" data-transition="slide-in">
<span class="media-object pull-left icon icon-person"></span>
<div class="media-body">
Twitter Feed
</div>
</a>
</li>第二个页面只包含twitter提要小部件代码。当我直接浏览到这个页面(没有被Push.js加载)时,所有的加载都是正确的,但是当它通过Push.js加载时,脚本就不会被执行。
请有人解释一下,在被Push.js加载之后,我需要做些什么来执行这个脚本?我已经搜索过Google、Stack Exchange和Github\Ratchet问题,但没有找到一个很好的例子来说明如何做到这一点。
一个解决方案是将data-ignore="push"添加到链接中,但我想知道如何处理push.js。
<div class="content">
<a class="twitter-timeline" href="https://twitter.com/XXXX" data-widget-id="XXXX">Tweets by XXX</a>
</div>
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
</script>发布于 2014-04-21 19:00:59
编辑:下面的是我最初是如何解决这个问题的,它运行得很好,但是我想出了一个更好的解决方案,我把它作为这个问题。的答案。
我终于想出来了。
在您的第一页中,您需要执行以下操作.
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);每次通过push加载新页面时,checkPage()都会执行。
发布于 2015-10-13 09:30:09
刚刚对Ratchet.js做了一个修改,使单个js对每一页都更优雅。(https://github.com/mazong1123/ratchet-pro)
通过使用新的ratchetPro.js,我们可以完成以下工作:
(function () {
var rachetPageManager = new window.RATCHET.Class.PageManager();
rachetPageManager.ready(function () {
// Put your logic here.
});
})();https://stackoverflow.com/questions/23145097
复制相似问题