不推荐等价的<form target =“...”> </form>

时间:2011-01-28 13:28:00

标签: html dom forms xhtml html-form

我希望实现与......相同的目标。

window.open('lalala.php', 'lalala', '...');

但我想发送HTTP POST请求而不是HTTP GET请求。因此,我使用以下内容:

$('<form/>').attr('action', 'lalala.php')
            .attr('target', 'lalala')      // w3schools.org says this is deprecated
            .attr('method', 'post')
            .append(hiddenParam('param1', param1))
            .append(hiddenParam('param2', param2))
            .submit().remove();

// hiddenParam is a function I created that returns an input tag
// the type attribute set to hidden,
// the id attribute set to the first parameter,
// and the value attribute set to the second parameter

但是,不推荐使用target属性。有没有办法通过非弃用手段实现我想要做的事情?

3 个答案:

答案 0 :(得分:6)

使用target - 不推荐使用它。

答案 1 :(得分:5)

  1. target仅在严格的文档类型中缺失。它不会被弃用。最简单的解决方案是使用过渡文档类型。
  2. 即使您使用严格的doctype,我所知道的所有浏览器也都做对了。
  3. 如果您必须使用严格的doctype,并且您非常关心验证,那么您可以扩展doctype定义:
  4. 请注意this 'bug' in just about every browser。解决方案是将您的XHTML作为application/xhtml+xml提供,但这会导致IE爆炸,因此您需要在确定内容类型之前嗅探该浏览器。对于验证表单上的小复选框,它实际上是一个巨大的黑客攻击。使用过渡文档类型通常要简单得多。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" [ <!ATTLIST form target CDATA #IMPLIED> ]>
    

答案 2 :(得分:0)

添加

<form target="lalala" ...></form>