首页 > 解决方案 > javscript - 从从第三方源加载的 js 中删除字符串代码

问题描述

我正在尝试捕获单击事件并且它工作正常,但是 JS 阻止了一些链接来捕获单击事件。

代码如下:

(function() {
  var layer = document.getElementById("Layer");
  if (layer) {
    var listen = function(obj, e, fn) {
      if (obj.addEventListener) { obj.addEventListener(e, fn, false); } else { obj.attachEvent("on"+e, fn); }
    };
    listen(layer, 'click', function (evt) {
      evt.stopPropagation();
      try { evt.cancelBubble(); } catch (e) { /* ignore */ }
      window.open(window.clickTag, '_blank');
    });
  }
})();

所以我可以例如删除代码或覆盖stopPropagation

evt.stopPropagation();
  try { evt.cancelBubble(); }

使用我自己的 JS 代码。我尝试使用以下方法访问 js 代码:

var iframe = document.getElementsByTagName('iframe')[0];
iframe.addEventListener('load', function(event){
    console.log("iframe Loaded", event);
});

在浏览器控制台中,我可以看到日志:

Event {isTrusted: true, type: "load", target: iframe, currentTarget: iframe, eventPhase: 2, …}
bubbles: false
cancelBubble: false
cancelable: false
composed: false
currentTarget: null
defaultPrevented: false
eventPhase: 0
isTrusted: true
path: Array(9)
0: iframe
1: a
2: div.banner2
3: div.col-lg-8.col-md-8.col-sm-12.col-xs-12
4: div.row
5: div.container
6: body
7: html
8: document

更新:当我尝试喜欢

iframe.contentWindow.addEventListener('click', function (e)

我收到如下错误。那么有什么方法可以在 Iframe 窗口上监听事件。

Uncaught DOMException: Blocked a frame with origin "mysite.com" from accessing a cross-origin frame. at HTMLIFrameElement

标签: javascriptjquery

解决方案


推荐阅读