我使用以下代码,以便在Web应用程序中打开所有内容:
<script type="text/javascript">
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++)
{
a[i].onclick=function()
{
window.location=this.getAttribute("href");
return false
}
}
但是,即使在桌面上,target="_blank"
的链接仍在同一选项卡中打开。如何在新选项卡中打开所有外部链接,同时仍将所有内部链接保留在同一选项卡中。我找到了单链接的解决方案,但我有太多不能手工更改。
注意:我正在使用apache,因此配置文件更改也可以。
答案 0 :(得分:2)
如果您在链接上设置“target”属性,则会在新标签中打开它们:
<script>
var origin=window.location.origin;
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++)
{
var link = a[i];
if(link.href && link.href.indexOf(origin)!=0)
link.setAttribute("target", "_blank");
}
</script>
在WordPress管理员中,您可以转到主题编辑器并将此代码放在页脚中。
答案 1 :(得分:1)
我设法从this post找到答案。 我把它放在我的标题中:
<script>
// Mobile Safari in standalone mode
if(("standalone" in window.navigator) && window.navigator.standalone){
// If you want to prevent remote links in standalone web apps opening Mobile Safari, change 'remotes' to true
var noddy, remotes = false;
document.addEventListener('click', function(event) {
noddy = event.target;
// Bubble up until we hit link or top HTML element. Warning: BODY element is not compulsory so better to stop on HTML
while(noddy.nodeName !== "A" && noddy.nodeName !== "HTML") {
noddy = noddy.parentNode;
}
if('href' in noddy && noddy.href.indexOf('http') !== -1 && (noddy.href.indexOf(document.location.host) !== -1 || remotes))
{
event.preventDefault();
document.location.href = noddy.href;
}
},false);
}
</script>
并在网络应用中打开所有常规链接,但在移动设备和桌面设备上,target="_blank"
的链接会在新标签页中打开。