由于target =“_ blank”无法验证,我该怎么做才能打开一个新窗口?

时间:2009-07-08 05:03:26

标签: jquery

我正在使用jQuery,并希望在新窗口中打开某些链接。

但是,我想传递有效的XHTML 1.1。另外,我相信这是一个行为,它应该在正确的层中,即JavaScript。

任何可用的jQuery插件?

4 个答案:

答案 0 :(得分:1)

我把一个快速的jQuery插件放在一起

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

    var 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();

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

更改标题文字的示例:

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

完全删除它的示例

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

这是我的第一个jQuery插件,所以任何反馈都会很棒。

答案 1 :(得分:1)

以http://或ftp://开头的所有链接都是我的情况下的外部:

$('a[href^="http"],a[href^="ftp"],').bind('click', function(event){
    open(this.href);
    return false;
});

或为您的目的更改选择器。

答案 2 :(得分:0)

坚持,您正在验证哪个XHTML版本?

“target”属性是有效的XHTML 1.0属性。它仅在版本1.1中无效。

您的问题可能是您在页面顶部声明了错误的版本吗?

<强>更新

嗯......嗯,我对你的应用程序了解不多,但如果你真的需要UI,这取决于之前的窗口没有被替换,那么也许你应该考虑一个模态弹出窗口。

链接真的意味着,你要去别的地方。如果您需要保持原状,那么为什么不找到另一种方式,例如模态窗口或隐藏/显示面板,这些方式会优雅地退回,以进一步用户界面?

答案 3 :(得分:0)

您可以使用 jquery.url.js

它非常易于使用,如下所示。

$.jqURL.loc("URL",{w:800,h:450,t:150,l:180,wintype:'_blank'});