在iframe脚本中使用javascript禁用超链接

4
我使用脚本加载内容,该脚本将生成一个 iframe。

var egmWidgetUrl = '//www.domain.com/widget2';

var referer = '';
if(location.host){
 referer = encodeURIComponent(location.host);
}else{
 referer = 'unknown';
}


fussballdeWidgetAPI = function() {
 var D = new Object();
 var C = new Object();

 D.showWidget = function(E, K) {
  if (K != undefined && K != null && K != "" && E != undefined && E != null && E != "") {
   if (document.getElementById(E)) {
    if (K != "") {
     var src = egmWidgetUrl + "/-"
         + "/schluessel/" + K
      + "/target/" + E
      + "/caller/" + referer;
     createIFrame(E, src);
    }
   } else {
    alert("Der angegebene DIV mit der ID " + E
      + " zur Ausgabe existiert nicht.")
   }
  }
 };

 window.addEventListener("message", receiveMessage, false);
 function receiveMessage(event)
 {
    if (event.data.type === 'setHeight'){
      document.querySelectorAll('#' + event.data.container + ' iframe')[0].setAttribute('height', event.data.value + 'px');
    }
    if (event.data.type === 'setWidth'){
      document.querySelectorAll('#' + event.data.container + ' iframe')[0].setAttribute('width', event.data.value + 'px');
    }
 }
 return D
};


function createIFrame(parentId, src){
 var parent = document.getElementById(parentId);
 var iframe = document.createElement('iframe');
 iframe.frameBorder=0;
 iframe.setAttribute("src", src);
 iframe.setAttribute("scrolling", "no");
 iframe.setAttribute("width", "300px");
 iframe.setAttribute("height", "500px");
 iframe.setAttribute("style", "border: 1px solid #CECECE;");
 parent.innerHTML="";
 parent.appendChild(iframe);
}
<script type="text/javascript"
  src="style/fussball_de.js">
 </script>

The call for the conetent is:

<script type="text/javascript">
    new fussballdeWidgetAPI().showWidget('widget1', '01PD126RC8000000Vxxxxxxxxxx');
</script>

在生成的iframe中将会有超链接,我希望禁用这些超链接,例如使用“#”符号。我尝试了不同的方法,但是没有什么帮助。
$("iframe").load(function() {
$("iframe").contents().find("a").each(function(index) {
    $(this).on("click", function(event) {
        event.preventDefault();
        event.stopPropagation();
    });
});

这个脚本是否可以禁用超链接呢?

谢谢!


1
如果 iframe 加载的页面与加载它的页面不在同一个域中,则无法执行此操作,因为它受到跨域策略的限制。 - Patrick Evans
2个回答

1
如果iframe的内容是从与主页面不同的域加载的,则由于安全原因,您将无法通过JavaScript访问其内容。如果您控制加载到iframe中的内容,则可以在加载的页面中使用一些JavaScript代码来检测它是否在iframe中运行,并禁用链接。

是的,这是真的,但我不能使用另一个脚本来禁用iframe中的链接吗? - Stan

1
除了使用CSS在iframe上放置一个透明图像,没有其他方法可以做到这一点。
编辑:
在您的HTML文档中,在

好的,听起来很有趣。你能给我更多的指示吗? - Stan
谢谢!通常情况下它应该工作,但是 iframe 将在脚本上加载,我没有 iframe- 标签。如果我把这些行放在脚本上方,它们将被忽略。 - Stan
如果您运行页面并查看HTML中iFrame的“插入”位置,您可以将标签放在其周围或确保iFrame加载到由<div>包围的指定标签中。 - DieVeenman
是的,DieVeenman,就是这样!太好了!!你有关于脚本附带的CSS的解决方案吗?我想要移除标题,但display:none;不起作用。 - Stan
据我所知,您无法编辑从外部加载到您的页面上的iframe中的CSS。 - DieVeenman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接