WordPress主题在链接上阻止target =“_ blank”。如何为某些外部链接重新激活它?

问题描述 投票:0回答:1

我正在使用这个主题在Wordpress上建立一个摄影作品集网站:http://wpshower.com/themes/expositio/。这个主题多年来没有更新,但仍能顺利进行。我有一个问题,即将target =“_ blank”分配给某些外部链接。选项在那里,但它没有任何影响。

我已经寻找建议并尝试了解决问题的每个可用插件,最好的结果是在新选项卡和当前选项卡中打开外部链接。

我查看了所有主题文件,它们并不多,并且认为这是一个javascript问题,我已经确定了以下代码。它处理移动菜单动画,但它是唯一提到的链接。它也在这里的类似线程中进行了讨论: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);
                }

最后,这里是使用相同主题的网站,其中外部链接在新选项卡中打开:http://www.tokyogoodidea.com/

对于解决这个小故障的任何建议,我将不胜感激。我对js并不擅长,也不知道该改变什么。

这是我项目的链接:http://one.clrblnd.com/先谢谢。

javascript wordpress href
1个回答
0
投票

似乎没有可靠的方法在Javascript中打开一个新选项卡(快速搜索告诉它可能很棘手),并且代码保证看起来像是阻止正在打开的新页面。你可以试试这是否有效。

首先是这条线之后

                var href = $(this).attr('href');

添加另一行说明(此行从标记中获取target属性/属性的值,如果未定义则假定为_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 />标记的目标属性/属性。

© www.soinside.com 2019 - 2024. All rights reserved.