将箭头函数转换为常规函数 - 用于 Google 标签管理器

Converting arrow function to regular function - For use in Google Tag Manager

我想在 GTM 中使用该脚本:

<script>
var isOverIFrame = false
var iframes = window.document.querySelectorAll('iframe');
function trackIframeClicks(frames){
  window.addEventListener('blur',function(e) {
    frames.forEach(function (frame, index) {
      if (frame.mouseOver) {
        window.dataLayer.push({
          'event': 'ifameClick',
          'frameSource': frame.src
        });
        // console.log(frame.src);
      }
    })
  });
}
function setListeners (frames) {
  frames.forEach(function(frame) {
    frame.mouseOver = false
    frame.addEventListener('mouseenter', () =>{
      frame.mouseOver = true
      // console.log('mouse in iframe')
    });
    frame.addEventListener('mouseleave', () =>{
      frame.mouseOver = false
      // console.log('mouse out of iframe')
    });
  })
}
setListeners(iframes);
trackIframeClicks(iframes);
</script>

尝试发布时出现以下错误:

第 20 和 24 行错误,字符 42:此语言功能仅支持 ECMASCRIPT_2015 模式或更好的模式:箭头函数。

有人可以帮忙重写这个函数,这样它就可以在没有箭头函数的情况下工作吗?

非常感谢。

    function setListeners (frames) {
  frames.forEach(function(frame) {
    frame.mouseOver = false
    frame.addEventListener('mouseenter',function enter (){
      frame.mouseOver = true
      // console.log('mouse in iframe')
    });
    frame.addEventListener('mouseleave',function leave () {
      frame.mouseOver = false
      // console.log('mouse out of iframe')
    });
  })
}
// An arrow function
() => {
  ...
}
// is shorthand syntactic sugar for
(function () { 
  ...
}).bind(this)

但是由于您不需要绑定到 this,您可以放弃它并只使用普通函数。

function () {
   ...
}