2010-07-31 25 views
26

HTML5 etkinleştirilmiş bir siteye koyma/silme yöntemlerinin neden Chrome ile çalışmadığını anlamaya çalışıyorum. Aradığım şeyden, Chrome ile bir süredir çalıştığı anlaşılıyor, bu yüzden sorunumu daraltmak için birkaç işaretçiyi aradığımı söyledim. Belki de formu yanlış uygulıyorum, belki de doctype'um yanlış, kim bilir. Herhangi bir yardım takdir :)HTML5 PUT/DELETE yöntemleri Chrome'da çalışmıyor mu?

Yani, kod şöyle görünür:

<!DOCTYPE html> 
<html> 

<head> 
     <title> 
      some_resource 
     </title> 
    </head> 
    <body> 
    <div class="content"> 
    <form method="put" action="/some_resource"> 
    <div> 
    <input id="title" name="title" placeholder="The Resource Title" type="text" value="" autofocus /> 
    </div> 
    <div> 
    <textarea id="body" name="body" placeholder="The Resource Body" required></textarea> 
    </div> 
    <div> 
    <input id="submit" name="submit" type="submit" value="Submit" /> 
    </div> 
    <!-- Resource Settings --> 
    <ul> 
    <li> 
    <input id="listed" name="listed" type="checkbox" value="y" /> 
    </li> 
    <li> 
    <input id="template" name="template" type="text" value="resource.html" /> 
    </li> 
    </ul> 
    </form> 
    </div> 
    </body> 
</html> 

bir form için sadece temel test. Şimdi son Ubuntu Firefox (3.6.7), Opera (10.60 Dahili) ve Google'dan (5.0.375.99 beta) en son Linux Chrome Beta sürümünü denedim. Hiçbiri, formu gönderdiğimde sunucuya uygun bir yöntem göndermiyor. Şimdi, (herhangi bir spesifik araştırmadan değil), Firefox'un bunu henüz desteklemediğine ve çok fazla HTML5 gibi, FF'nin bir sonraki sürümü için planlandığına inanıyorum. Opera hakkında bilmiyorum, ancak sık sık Chrome'la uyum sağladığını duyuyorum. Evet, biraz kafam karıştı. Bu formu gönderirken, şu URL'ye gider: http://localhost:8080/some_resource?title=t&body=b&submit=Submit&template=resource.html. Beklendiği gibi, POST'un iyi çalıştığını unutmayın.

Artık herkesin put yöntemini çalıştırması için herhangi bir işaretçisi var mı? Linux için beta sürümü sadece Windows çeşitliliğinin güncellenmemiş olması olasıdır (, varsaydığım bir şey, kullanıcıların PUT'yi Chrome için çalışırken gördüğüm şeydir), ama gerçekten umuyorum benim uygulamamla ilgili bir sorundur.

Sunucuların PUT/DELETE desteklemesi gerekiyor mu? (Şu anda AppEngine Dev Server kullanıyorum). Umarım birileri bazı fikirler :) herhangi yanıtlara

sayesinde vardır .. Bilmiyorum Lee

Not: ben şimdiye kadar çalışıyoruz test ettik Diğer HTML5 özellikleri. Örneğin, bu formda otomatik odaklama ve gerekli öznitelikleri görebilirsiniz. Bunlar Chrome'da tasarlandığı şekilde çalışıyor.

Edit1: Sadece açıklığa kavuşturmak için, bunların desteklerinin taslak olduğunu anlıyorum. Daha önce bir cevaba cevap verdiğim gibi, diğer tarayıcılarda mevcut desteği umursamıyorum. Şu anda çalışmak istediğim Chrome'dur ve Firefox'un yeni sürümde çalışmasını beklerim (Bilmiyorum, sadece HTML5'i zorluyorlar) ve Opera hakkında hiçbir fikrim yok.

Tüm bunlar sadece HTML5'in (Web İşçileri, localStorage, vb.) Ve CSS3'ün yeni harika dünyasını test etmek ve öğrenmek içindir. Ben sadece kanama kenarı teknolojisine uyan kanama kenarı tarayıcıları ile ilgileniyorum :)

+4

'PUT' ve' DELETE' HTML5 ile ilgisi yoktur; HTTP/1.1 belirtiminde tanımlanmıştır. Destek, hem istemci (gönderilecek) hem de sunucu (işlemek için) tarafında mevcut olmalıdır. – You

+0

Yea, ve izin verildiği gibi kullanım HTML5, hakkında çok heyecanlandığım bir şey. Soru şu ki .. neden çalışmıyor: /. Cehennem, bazı insanlar şu anda bir tonluk özniteliklerin desteklendiğini söylüyor, ancak PUT/DELETE çalışmasını bile göremiyorum. Argh –

+0

Resmi olarak desteklenen fiilleri almak için bir taslak var. PUT/DELETE çağlar boyunca HTTP'nin bir parçası olduğu için neden bu kadar uzun sürdüğü konusunda hiçbir fikrim yok. Daha fazla bilgi için http://amundsen.com/examples/put-delete-forms/ adresine bakın. Taslak kabul edilene kadar, tarayıcılar GET ve POST dışında başka bir şey göndermez. –

cevap

23

PUT (Ve. Sen onları bırakabilir <label for veya komut dosyası hedeflemesi için bir id gerekmedikçe. Ya tüm alanlarına id s eklemek gerekmez) ve <form> için artık desteklenmiyor yöntemlerdir SİL etiket. HTML5 differences from HTML4 (19 Ekim 2010)

+4

Başlıklar için teşekkürler .. O zaman REST'in ne kadar uygun bir şekilde uygulanacağı konusunda bir fikrin var mı? –

+8

PUT ve DELETE desteği, HTML5 özelliklerinden, örneğin

'un "method" özelliğine bir değer olarak eklenerek kaldırılmıştır. . Ancak PUT ve DELETE, HTTP 1'in bir parçası olarak çok canlı ve iyi durumda.1 spec, bir sunucu hala onları dinleyebilir (REST çağrıları için) ve Ajax üzerinden PUT ve DELETE göndermek için bir tarayıcı almanın hala mümkün olduğuna inanıyorum (bkz. Http://stackoverflow.com/questions/165779/ Hangi-koyun-silme-kafa-vs-yöntemler-mevcut-in-en-web tarayıcıları) –

3

Monolitik bir standart olarak “HTML5” yoktur.

Bazıları HTML4 ile aynıdır. Bazıları, her tarayıcının uyguladığı ve herkesin yıllardır kullandığı standart olarak standart olmayan özellikleri onaylıyor. Bazıları, tarayıcı satıcılarının çoğunlukla üzerinde mutabakata vardıkları ve uygulamanın çeşitli aşamalarında yer aldığı yeni uzantılardır. Örneğin, autofocus. Ancak, bir kısmı standartlaştırılmadan önce değişmesi muhtemel olan spot-uygulamalı nesnelerdir ve bazıları WHATWG'deki bazı rastgele kiĢilerin iyi olacağını düĢünen rastgele bonus özelliklerinden bazılarıdır. tarayıcı yazarları.

Bu ikinci kategoriden daha azı vardır (eski WHATWG taslakları neredeyse XHTML 2.0 gibi mimarlık-astronomi kötülükleriyle doluydu), fakat hala bazı ve halihazırda genişletilmiş biçim gönderme türleri (PUT/DELETE yöntemleri ve HTTP dışı eylemlerin bazıları) bu kategoridedir. Her tarayıcı şu anda get varsayılan attr değerine geri düşen method="put"'u yok sayar.

Belki bir gün bunu tarayıcıları uygular. Ya da belki de spekülerden çıkarılacak. HTML5 bitmiş haliyle hala uzun bir yoldur. Şimdilik, sadece herkes gibi POST kullanın. Oldukça saf bir RESTfulness değil, ama o zaman bu size özel bir şey getirmiyor.

<input ... autofocus /> 

HTML veya XHTML sözdizimlerini kullanın, ancak bunları karıştırmayın. XHTML5 için autofocus="autofocus" veya HTML5 için kendi kendine kapanan /'u kaybedersiniz. form.submit() yöntemi ile çatışmaları önlemek için, bir düğmeye adlandırma

<input id="submit" name="submit" type="submit" value="Submit" /> 

En önlemek. Yine de, belirli bir düğmeyi tıklamanız gerekmedikçe, bir gönder düğmesinde name'a ihtiyacınız yoktur.

+0

Peki, tüm bunlar PUT/DELETE özelliğini destekleyen Chrome hakkında tam olarak ne konuşuyor? Açıkça söylemek gerekirse, bunları kişisel projeler üzerinde kullanıyorum ve yeni HTML5 özelliklerini (web çalışanları, vb.) Öğrenmek için kullanıyorum, bu yüzden diğer tarayıcıları toz içinde bırakmam umurumda değil. Chrome'un çalışmasını, Firefox'un hiç çalışmamasını (daha fazla HTML5 desteği sağlayan güncellemeye kadar) ve Opera'yı bilen ... kimseyi bekledim. IE ofcourse, Chrome Frame gerektirir. Sadece yöntemlerin istenen şekilde çalışmasını istiyorum .. Neden Chrome'u PUT/DELETE destekli hakkında konuşalım? Onları yanlış anladım mı? –

+0

Kapanış (/>) ve adlandırma (gönderme) kadar, yani bir form üreteci kitaplığından (Python'un WTForms) olduğu ve henüz kapanış etiketlerini nasıl değiştireceğimi görmedim. Gönderme düğmesinin isimlendirilmesine gelince, bu kolayca değiştirilebilir. Yine, bu sadece PUT çalışması için bir test. Her şey önemli değil :) –

+0

Böyle bir konuşma kendimi duymadım, ama şüphelenirim, sizden bahseder gibi, bazı eski tarayıcılar dışında bu yöntemlerin gönderilmesine izin veren 'XMLHttpRequest' ile ilgili olabilir. – bobince