如何禁用 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>
我有以下脚本 运行 为我的平板电脑提供天气预报。问题是每次有人不小心触摸它时,它都会打开源页面。有什么想法可以阻止外部页面的 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>