当前位置:  开发笔记 > 编程语言 > 正文

打开新浏览器窗口的最佳方法是什么?

如何解决《打开新浏览器窗口的最佳方法是什么?》经验,为你挑选了4个好方法。

我知道大多数链接应由最终用户决定如何打开,但我们不能否认有时你几乎"必须"强行进入一个新窗口(例如维护表单中的数据)在当前页面上).

我想知道的是,在新的浏览器窗口中打开链接的"最佳"方式的共识是什么.

我知道那是出局.我也知道由于各种原因这并不理想.我也尝试用类似的东西完全替换锚点,然后将SPAN的样式看起来像一个链接.

我倾向于使用的一个解决方案是使用JavaScript将所有目标设置为标记为"外部"的锚点上的"_blank".

还有其他想法吗?什么更好?我正在寻找最符合XHTML标准且最简单的方法.

更新:我说target ="_ blank"是一个否定的,因为我已经在几个地方读过目标属性将逐步退出XHTML.



1> Damir Zekić..:

我正在使用你提出的最后一种方法.我添加rel ="external"或类似的东西然后使用jQuery迭代所有链接并为它们分配一个点击处理程序:

$(document).ready(function() {
  $('a[rel*=external]').click(function(){
    window.open($(this).attr('href'));
    return false; 
  });
});

我发现这是最好的方法,因为:

语义非常清楚:你有一个外部资源的链接

它符合标准

它优雅地降级(你有一个非常简单的常规href属性链接)

它仍然允许用户中间点击链接,如果他们愿意,可以在新标签中打开它


只是侧面注释使用rel*= external.注意星号.如果你有rel ="外部nofollow",没有星号就不会触发.星号是一个搜索修改器,表示CONTAINS外部.

2> Luk..:

为什么是target="_blank"个坏主意?

它应该完全符合你的要求.

编辑:(见评论)点了,但我确实认为使用javascript来完成这样的任务可能会让一些人感到非常沮丧(那些中间点击在习惯上打开一个新窗口的人,以及那些使用NoScript扩展的人)


我从来不关心,因为像这样的垃圾,我不会很快看到自己关心标准.哦不,我们已经确定目标不好,所以改变一切!好吧,我的目标属性是保持不变,就是这样.
@Paolo,没有人说要改变一切.但是继续前进,我认为保持合规是一个好主意.

3> Mnementh..:

不要强制在新窗口中打开链接.

反对的原因:

它侵犯了最不惊讶的规则.

后退按钮不起作用,用户不太可能知道原因.

选项卡式浏览器会发生什么?新标签页或新窗口?无论哪个发生,如果你混合标签和窗口,它是你想要的吗?

我总是听到打开一个新窗口的原因是用户不会离开该网站.但可以肯定的是,我永远不会回到一个让我烦恼的网站.如果该网站取消了我的控制权,那将是一个很大的烦恼.

一种方法可能是,你给两个链接,一个是正常的,另一个是在一个新窗口中打开它.在普通链接后添加带有小符号的第二个.这样,您网站的用户就可以控制他们想要点击的链接.



4> alex..:

这是我为jQuery编写的插件

 (function($){  
  $.fn.newWindow = function(options) {       
    var defaults = {
        titleText: 'Link opens in a new window'     
    };

     options = $.extend(defaults, options);

     return this.each(function() {  
       var obj = $(this);

       if (options.titleText) {        
           if (obj.attr('title')) {
                     var newTitle = obj.attr('title') + ' (' 
                                                + options.titleText + ')';
           } else {
                    var newTitle = options.titleText;
           };              
           obj.attr('title', newTitle);            
       };          

       obj.click(function(event) {
          event.preventDefault();  
          var newBlankWindow = window.open(obj.attr('href'), '_blank');
          newBlankWindow.focus();
        });     
       });    
  };  
 })(jQuery); 

示例用法

$('a[rel=external]').newWindow();

您还可以通过传递一些选项来更改或删除标题文本

更改标题文本的示例:

$('a[rel=external]').newWindow( { titleText: 'This is a new window link!' } );

完全删除它的示例

$('a[rel=external]').newWindow( { titleText: '' } );

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有