Wordpress 主题阻止链接上的 target="_blank"。我如何为某些外部链接重新激活它?
Wordpress theme blocks target="_blank" on links. How do I reactivate it for some external links?
我正在使用这个主题在 Wordpress 上构建一个摄影作品集网站:http://wpshower.com/themes/expositio/。该主题多年未更新,但仍然运行流畅。不过,我在将 target="_blank" 分配给某些外部 link 时遇到了问题。该选项在那里,但它没有任何效果。
我寻求建议并尝试了解决问题的所有可用插件,最好的结果是在新选项卡和当前选项卡中打开外部 link。
我查看了所有的主题文件,它们并不多,认为这是一个javascript问题,我确定了以下代码。它处理移动菜单动画,但它是唯一提到的 links。
它也在此处的类似线程中进行了讨论:Wordpress navbar links using href="#" not working as a dummy link
$('a').on('click', function(e) {
e.preventDefault();
var _this = $(this);
// close mobile menu if it's open, redirect otherwise
if (_body.hasClass('toggled-on') && _this.parents('#page').length == 1
&& _this.parents('#primary-navigation').length == 0
) {
load_effect.menuOff();
} else {
load_effect.loader.show();
var href = $(this).attr('href');
$('.site').css('opacity', 0);
setTimeout(function() {
window.location = href;
}, load_effect.duration);
}
最后,这是使用相同主题的网站,其中外部 link 会在新选项卡中打开:http://www.tokyogoodidea.com/
对于解决这个小故障的任何建议,我将不胜感激。我对 js 一点都不擅长,也不知道要改变什么。
这是我的项目 link:http://one.clrblnd.com/
提前致谢。
在 Javascript 中似乎没有打开新选项卡的可靠方法(快速搜索表明它可能很棘手),而且代码确实看起来阻止了打开新页面。如果可行,您可以尝试一下。
首先在这一行之后
var href = $(this).attr('href');
添加另一行说(此行从标签中获取 target
attribute/properties 的值,如果未定义则假定为 _self
)
var target = $(this).prop('target') || '_self';
然后寻找这一行
$('.site').css('opacity', 0);
它的作用是使整个页面本质上是空白的。您可能想对此做一些事情,例如将它包装在一个 if 语句中,这样它就不会在 target="_blank"
时执行。一种快速修复方法是将其替换为
target === '_blank' || $('.site').css('opacity', 0);
下一个替换(仅比上一个替换几行)
window.location = href;
和
window.open(href, target)
相应的块应该看起来像
load_effect.loader.show();
var href = $(this).attr('href');
var target = $(this).prop('target') || '_self';
target === '_blank' || $('.site').css('opacity', 0);
setTimeout(function() {
window.open(href, target)
}, load_effect.duration);
这是假设 window.open
按预期工作(文档为 here)。代码中发生的情况是,作者在单击带有
的 link 后停止了默认行为
e.preventDefault();
为了让一些花哨的动画在浏览器继续加载预期页面之前完成。但是,通过使用
简化页面加载
window.location = href;
它忽略相应 <a />
标签的目标 attribute/property。
我正在使用这个主题在 Wordpress 上构建一个摄影作品集网站:http://wpshower.com/themes/expositio/。该主题多年未更新,但仍然运行流畅。不过,我在将 target="_blank" 分配给某些外部 link 时遇到了问题。该选项在那里,但它没有任何效果。
我寻求建议并尝试了解决问题的所有可用插件,最好的结果是在新选项卡和当前选项卡中打开外部 link。
我查看了所有的主题文件,它们并不多,认为这是一个javascript问题,我确定了以下代码。它处理移动菜单动画,但它是唯一提到的 links。 它也在此处的类似线程中进行了讨论:Wordpress navbar links using href="#" not working as a dummy link
$('a').on('click', function(e) {
e.preventDefault();
var _this = $(this);
// close mobile menu if it's open, redirect otherwise
if (_body.hasClass('toggled-on') && _this.parents('#page').length == 1
&& _this.parents('#primary-navigation').length == 0
) {
load_effect.menuOff();
} else {
load_effect.loader.show();
var href = $(this).attr('href');
$('.site').css('opacity', 0);
setTimeout(function() {
window.location = href;
}, load_effect.duration);
}
最后,这是使用相同主题的网站,其中外部 link 会在新选项卡中打开:http://www.tokyogoodidea.com/
对于解决这个小故障的任何建议,我将不胜感激。我对 js 一点都不擅长,也不知道要改变什么。
这是我的项目 link:http://one.clrblnd.com/ 提前致谢。
在 Javascript 中似乎没有打开新选项卡的可靠方法(快速搜索表明它可能很棘手),而且代码确实看起来阻止了打开新页面。如果可行,您可以尝试一下。
首先在这一行之后
var href = $(this).attr('href');
添加另一行说(此行从标签中获取 target
attribute/properties 的值,如果未定义则假定为 _self
)
var target = $(this).prop('target') || '_self';
然后寻找这一行
$('.site').css('opacity', 0);
它的作用是使整个页面本质上是空白的。您可能想对此做一些事情,例如将它包装在一个 if 语句中,这样它就不会在 target="_blank"
时执行。一种快速修复方法是将其替换为
target === '_blank' || $('.site').css('opacity', 0);
下一个替换(仅比上一个替换几行)
window.location = href;
和
window.open(href, target)
相应的块应该看起来像
load_effect.loader.show();
var href = $(this).attr('href');
var target = $(this).prop('target') || '_self';
target === '_blank' || $('.site').css('opacity', 0);
setTimeout(function() {
window.open(href, target)
}, load_effect.duration);
这是假设 window.open
按预期工作(文档为 here)。代码中发生的情况是,作者在单击带有
e.preventDefault();
为了让一些花哨的动画在浏览器继续加载预期页面之前完成。但是,通过使用
简化页面加载 window.location = href;
它忽略相应 <a />
标签的目标 attribute/property。