2013-11-26 44 views
0

我在PHP + HTML中有一个奇怪的问题。PHP链接问题与目标=“_ blank”

我将此代码自动生成一个项目图像,并使用_blank目标创建一个<a>标记。非常好用,但链接不会在空白页面中定位。

PHP

<?php if ($item->getPrimaryImage()) :?> 
<div class="image-container"> 
    <?php if ($item->getPrimaryLink()) : ?><a href="<?php echo $item->getPrimaryLink()->getUrl(); ?>" target="_blank"><?php endif; ?> 
       <img src="<?php echo $item->getPrimaryImage()->getSource(); ?>" alt="" class="mosaic-image" /> 
       </a> 
</div> 
+0

您应该显示生成的html代码的相应部分。可能是'$ item-> getPrimaryLink() - > getUrl();'有问题,返回一些无效的东西。 –

回答

0

这是在新窗口中打开链接的不好方法,因为它有点折旧。使用JavaScript来代替,这里有一个例子:

<a href="mylink.htm" onclick="window.open('mylink.htm');return false;">click me</a>

返回打开窗口后假停止当前页面改变太多,但允许保留你的SEO方面与正规href=""属性。

+0

虽然'_blank'依据[htlm5规格](http://www.w3.org/TR/html5/browsers.html#valid-browsing-context-name-or-keyword)仍然有效,但它大部分是当一个坏主意不让用户自己选择是否应该在新窗口中打开该链接时。用js代替'target =“_ blank”' - 如果你想要执行'window.open' - 不检查是否删除了目标'_blank'通过一个插件,方式更加恶劣,因为它绝对不可能抑制这种行为。 –

+0

@ t.niese我知道它仍然在html5规范中,但我相信它在XHTML 1.0 Strict和XHTML 1.1中已被弃用,并且基本上已经出来。至于用户体验,这是一个不同的主题,不同的需求需要不同的方法。例如,在一个网络应用程序中,这可能不是一个问题。 – Alfie

+0

由于'XHTML'的限制和'XHTML 2'的停滞发展,'html4'到'XHTML 1.x'的原始动作被停止,因为'html5'是新标准。 –

0

这不是一个PHP的问题。没有什么错的代码,相同的输出在此的jsfiddle

http://jsfiddle.net/3e65q/

<div class="image-container"> 
    <a href="http://www.google.com" target="_blank">hello</a> 
</div> 

创建并在一个新的窗口(在我的情况下,新标签)打开,但它工作正常。

+0

'_new'和'_blank'不一样。 '_blank'具有特殊含义(在新窗口/选项卡中打开链接),'_new'不(它会打开目标名称为_new的窗口中的链接)。 –

+0

t.niese我想在这个例子中写一个_blank,但是读了另一个让我头脑混乱的答案。感谢您的评论。 –