Target Blank

by Yan Sheng

原先一直以为只有链接 a 才可以使用 target="_blank" , 这也就让链接在另外一个窗口中打开.

现在想实现个预览效果, 想让表单提交并在一个新窗口中显示, 而原来的窗口内容不变. google下, 发现有些直接是window.open(url...), 那这个就是直接打开对应的url. 而现在需要提交表单. 找到可以使用 target="_blank" .就可.

此为其一. 那现在 有一个 提交和预览按钮, 针对同一个form. 提交按钮不需要在新窗口中打开, 而预览则最好打开另一个窗口. 自然而然想到的是, 对提交按钮不需要form的target属性, 而预览需要. 简单js下:

$j("input#preview").click(function(){

    $j(this).attr("disabled", "true");
    $j("form#frm").attr("target", "_blank");
    $j("form#frm").submit();
    $j(this).removeAttr("disabled");
    $j("form#frm").removeAttr("target");
});

可这段代码并不能在新窗口中打开, 而直接在当前窗口. 但测试submit前的确form是target为_blank.

后来猜到是否需要有个延迟时间. 于是,

$j("input#preview").click(function(){

    $j(this).attr("disabled", "true");
    if (!$j("input#prw").length) $j(this).after('<input type="hidden" name="preview" value="1" id="prw" />');

    $j("form#frm").attr("target", "_blank");
    setTimeout(function(){
        $j("form#frm").submit();
        $j(this).removeAttr("disabled");
        $j("form#frm").removeAttr("target");
    }, 1000);
});

果然可以~~~

后来, 发现光光这样做. 打开IE时会提示弹出窗口的提示.这个不怎么好.

所以换成.

<div class="btn">
    <input type="submit" value="发  布" class="gBtnGreen" id="sbm" onmouseover="this.className='gBtnGreenHover'" onmouseout="this.className='gBtnGreen'" onclick="this.form.target='_parent';" />
    <input type="submit" value="预  览" class="gBtnGray" onmouseover="this.className='gBtnGrayHover'" onmouseout="this.className='gBtnGray'" id="preview" onclick="this.form.target='_blank';" />
</div>

也就是type为submit,而不是button,然后onclick上设置form的target属性。

对应的js就不需要了。只要设置写不可用属性就可。

HTMLJavascript