如何禁用 link 到外部站点的脚本

How to disable script to link to external sites

我有以下脚本 运行 为我的平板电脑提供天气预报。问题是每次有人不小心触摸它时,它都会打开源页面。有什么想法可以阻止外部页面的 link 吗?我使用沙箱在 Iframe 上取得了成功,但无法让它工作,因为我不确定这种语言是什么:

<a class="weatherwidget-io" href="https://forecast7.com/en/51d51n0d13/london/ "data-label_1="LONDON" data-label_2="WEATHER" data-font="Roboto" data-icons="Climacons Animated" data-theme="pure"  pointer-events: none>LONDON WEATHER</a>
<script>
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src='https://weatherwidget.io/js/widget.min.js';fjs.parentNode.insertBefore(js,fjs);}}(document,'script','weatherwidget-io-js');href="javascript:void(0)"
</script>

<script>
 function reloadIFrame() {
     document.getElementById('weatherwidget-io-0').src = document.getElementById('weatherwidget-io-0').src;
 }
    
 window.setInterval(reloadIFrame, 95000);
 </script>

<script type="text/javascript">
   function DisableFrameLinks(){
   var iFrame = document.getElementById('weatherwidget-io');
   var links;
  if ( iFrame.contentWindow)
   {
     links = iFrame.contentWindow.document.links;
     for(var i in links)
     {
        links[i].href="#";
     }
   }
 }
  </script>

<a> 中的 pointer-events: none 周围缺少 style="" 属性。

更新自:

<a class="weatherwidget-io" ... pointer-events: none>LONDON WEATHER</a>

至:

<a class="weatherwidget-io" ... style="pointer-events: none;">LONDON WEATHER</a>

此外,您的整个代码可以简化为以下内容,如:

  • 所有 <script>!function(d,s,id)...</script> 函数所做的就是将 <script id="weatherwidget-io-js" src="https://weatherwidget.io/js/widget.min.js"></script> 添加到页面(如果它不存在) - 您可以首先添加脚本并删除该函数.

  • 一旦 CSS 样式 pointer-events: none; 正确应用于 <a>.

    DisableFrameLinks() 函数也可删除

最低要求代码:

<a class="weatherwidget-io" href="https://forecast7.com/en/51d51n0d13/london/" data-label_1="LONDON" data-label_2="WEATHER" data-font="Roboto" data-icons="Climacons Animated" data-theme="pure" style="pointer-events: none;">LONDON WEATHER</a>

<script id="weatherwidget-io-js" src="https://weatherwidget.io/js/widget.min.js"></script>

<script>
    function reloadIFrame() {
        document.getElementById('weatherwidget-io-0').src = document.getElementById('weatherwidget-io-0').src;
    }

    window.setInterval(reloadIFrame, 95000);
</script>