2011-01-28 22 views
6

chcę osiągnąć takie same jak ...dla przestarzałe odpowiednik <form target = „...”>

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

Ale chcę wysłać żądanie HTTP POST zamiast żądania HTTP GET . Zatem, używam następujące:

$('<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 

Jednak atrybut target jest przestarzała. Czy jest jakiś sposób, aby osiągnąć to, co próbuję osiągnąć za pomocą nieużywających środków?

+11

nie zawsze wierz W3Schools –

+6

* * Nigdy nie wierzyć W3Schools dopóki nie widziałem dowodów potwierdzających ze źródła, które jest faktycznie wiarygodne. – Quentin

+0

Więc, co jest wiarygodnym źródłem? (I, przy okazji, czy W3C może pozwać tych facetów w3schools?) – pyon

Odpowiedz

5
  1. target brakuje tylko w ścisłych doctykach. To nie jest przestarzałe. Najprostszym rozwiązaniem jest użycie przejściowego doctype.
  2. Wszystkie przeglądarki, o których wiem, działają prawidłowo, nawet jeśli używasz ścisłego doctype.
  3. Jeśli trzeba użyć ścisłej doctype, a obchodzi, że dużo o walidacji, wtedy można rozszerzyć definicję doctype:

Wystarczy mieć świadomość this 'bug' in just about every browser. Rozwiązaniem jest dostarczenie XHTML jako application/xhtml+xml, ale spowoduje to wysadzenie IE, więc przed określeniem typu zawartości musisz go powąchać. Jest to w zasadzie jeden gigantyczny hack na małe pole wyboru w formularzu sprawdzania poprawności. Zwykle dużo łatwiej jest po prostu użyć przejściowego doctype.

<!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> ]> 
+3

'cel' nie jest nigdzie przestarzałe. Po prostu nie pojawia się w ścisłych dokumentach. – Quentin

+0

Co to jest "[]' zrobić? – pyon

+0

@Eduardo w teorii, informuje przeglądarkę, że istnieje dodatkowy atrybut elementu '

' nazywanego celem. W praktyce powoduje to, że twoja przeglądarka zwisa (chyba, że ​​używasz Opery). –

6

Zastosowanie target - nie jest to zalecane.

+0

Ci goście mówią, że jest: http://www.w3schools.com/TAGS/att_form_target.asp. Ale używają ASP, więc nie mogą być poważne, prawda? – pyon

+7

Są w błędzie (jak zwykle: http://w3fools.com/) Rzucam Ci wyzwanie, aby znaleźć D w kolumnie "Nieaktualne" dla atrybutu celu pod adresem http://www.w3.org/TR/html4/index/attributes .html lub odniesienie w dowolnej innej oficjalnej specyfikacji. – Quentin

+0

Dzięki. Mimo że czuję się głupio, aby przyznać, że dowiedziałem się wszystkiego, co wiem o tworzeniu stron internetowych od w3schools.org. – pyon

0

Dodaj

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

To będzie celować w nowe, nienazwane, okno, a nie otwierane z określonymi argumentami. – Quentin

Powiązane problemy