我有一个带有打字脚本的Next.js网站,我正试图在上面安装广告.广告Provider 提供了在我的网站上添加此脚本的说明:

<script src="//m.servedby-buysellads.com/monetization.js" type="text/javascript"></script>

<script>
  (function(){
    if(typeof _bsa !== 'undefined' && _bsa) {
      _bsa.init('flexbar', 'MYTOKEN', 'placement:wwwmysitecom');
    }
  })();
</script>

该库加载一个类似var _bsa={init:function(format...的文件.因此,在我的主pages/_app.tsx文件中,我包含了如下脚本和代码片段:

  if(typeof _bsa !== 'undefined' && _bsa) {
    _bsa.init('flexbar', 'MYTOKEN', 'placement:wwwmysitecom');
  } else {
    console.log("bsa is undefined")
  } 

  return (
    <>
      <Script src="//m.servedby-buysellads.com/monetization.js" type="text/javascript"></Script>

当我第一次加载页面时,我收到日志(log)消息"BSA IS UNDEFINED".如何在加载monetization.js库后调用此_bsa.init函数?

推荐答案

您得到的是undefined,因为浏览器应该请求获取该JavaScript文件.默认情况下,Next.js提前加载脚本,但在页面上发生一些水合之后.因此,这里的解决方案是使用ScriptonLoad函数,如下所示:

<Script
  onLoad={() => {
    _bsa.init("flexbar", "MYTOKEN", "placement:wwwmysitecom");
    console.log(_bsa);
  }}
  src="//m.servedby-buysellads.com/monetization.js"
  type="text/javascript"
/>

如果您希望它在加载时和每次渲染后激发,也有onReady.

Javascript相关问答推荐

我可以使用querySelectorAll获取单元格索引吗?

为什么我会获取MUI Date TimePicker TypHelp:Value.isValid不是AdapterDayjs.isValid中的函数

如何在表格上拥有水平滚动条,在正文页面上拥有垂直滚动条,同时还对html表格的标题使用位置粘性?

Klaro与Angular的集成

我试图实现用户验证的reduxstore 和操作中出了什么问题?

在React中获取数据后,如何避免不必要的组件闪现1秒?

Angular material 拖放堆叠的牌副,悬停时自动展开&

在我的html表单中的用户输入没有被传送到我的google表单中

如何在 cypress 中使用静态嵌套循环

如何修复我的数据表,以使stateSave正常工作?

在Java中寻找三次Bezier曲线上的点及其Angular

环境值在.js文件/Next.js中不起作用

查询参数中的JAVASCRIPT/REACT中的括号

如何将zoom 变换应用到我的d3力有向图?

使每个<;li>;元素的 colored颜色 与随机生成的 colored颜色 列表不同(不重复

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

P5.js中的分形树

如何使用抽屉屏幕及其子屏幕/组件的上下文?

P5JS-绘制不重叠的圆

在JavaScript中,有没有一种方法可以迭代字符串的词法标记?