0

我在我的网站上使用 Barba.js。当通过 Barba.js 加载“投资组合”页面时,我运行一个函数,我们称之为get_portfolio_items(). 有一些内联 javascript 变量get_portfolio_items()需要访问其值。如果“投资组合”页面是要加载的第一个页面,则 get_portfolio_items() 可以很好地访问这些变量。但是,如果先加载另一个页面,然后单击进入投资组合页面,我会收到错误消息:

loadMoreVars 未定义。

即使我可以看到 loadMoreVars 在 DOM 中。

如何在 get_portfolio_items() 中访问这些变量?谢谢!

这是出现在新页面上的实际 HTML 中的脚本:

<script type="text/javascript">
      var loadMoreVars = {
        postsPerPage : 9,   
        maxNumPages : 6,
      };
</script>

这是每当通过 Barba.js 加载新页面时调用的函数

function get_portfolio_items(){
 alert(loadMoreVars.postsPerPage);
 alert(loadMoreVars.maxNumPages);
}

这是加载新页面时触发该函数的 Barba.js 代码。

Barba.Dispatcher.on('newPageReady', function(current, prev, container) {
    history.scrollRestoration = 'manual';
    get_portfolio_items()
});

我怎样才能让函数看到变量并提醒它们?

4

1 回答 1

0

有点晚了,但我设法让它工作。将变量设置为窗口对象很重要。

<!-- HTML FILE -->
<script class="loadInlineScript">
  window.loadmoreurl='FOO';
</script>

// JS FILE
Barba.Dispatcher.on('newPageReady', function(currentStatus, oldStatus, container) {
  var inlineScript = $(container).find('script.loadInlineScript')
  inlineScript.each(function(i, elm) {
    eval(elm.innerHTML);
  })
});
于 2020-07-27T10:59:35.953 回答