2011-08-09 8 views
18

कल रात, मैंने सोचा कि मैं एचटीएमएल 5 क्षमताओं का प्रदर्शन करने और कुछ चीजों को आजमाने के लिए एक त्वरित परियोजना करूँगा। हालांकि, मुझे लगता है कि सफारी में काम करने के लिए ड्रैग और ड्रॉप कैसे प्राप्त करें, जबकि यह क्रोम और फ़ायरफ़ॉक्स में पूरी तरह से काम करता है। अधिक सटीक, ऐसा लगता है कि जब आप वेबसाइट के अंदर एक छवि को ड्रॉप क्षेत्र में खींचने का प्रयास करते हैं तो सफारी सफारी में आग लगती नहीं है। जब आप डेस्कटॉप से ​​फ़ाइल खींचते हैं और छोड़ते हैं तो उसी समय यह आग लगती है।सफारी 5.1 ने HTML देशी ड्रैग और ड्रॉप तोड़ दिया?

मुझे सच में यकीन नहीं है, लेकिन मुझे पूरा यकीन है कि जब मैंने काम पर एक ही स्क्रिप्ट की कोशिश की (जहां मेरे पास सफारी 5.0.2 इत्यादि हैं), तो उसने ड्रॉप इवेंट को निकाल दिया (कल इसे जांचने जा रहा है निश्चित रूप से) और मुझे फ़ाइल रीडर-संबंधित त्रुटियों की उम्मीद की गई थी। लेकिन जब मैंने अपने पीसी पर सफारी 5.1 स्थापित किया, तो मुझे केवल ड्रैगओवर मिलता है, ईवेंट दर्ज करें और छोड़ दें (और फ़ाइल को ब्राउजर में खींच लिया गया हो तो भी छोड़ दें)।

मैं कुछ समय के लिए गुगलिंग कर रहा हूं और ऐसा लगता है कि वास्तव में सफारी 5.1 में काम करने वाले ड्रैग और ड्रॉप का एक उदाहरण नहीं मिलता है। यहां तक ​​कि सफारी का dev-centre's sample काम नहीं करता है, अकेले html5demo.com 1 और html5demo.com 2 दें। इससे मुझे लगता है कि सफारी के पास एक बग है या शायद उन्होंने कुछ अनिवार्य रूप से लागू किया है जो देव केंद्र (200 9 में अंतिम अपडेट) में दिखाई नहीं दे रहा है।

जिस स्क्रिप्ट को मैं ठीक करने का प्रयास कर रहा हूं वह my site पर है (क्षमा करें दोस्तों, पोस्ट करने के लिए कोई समस्या विशिष्ट कोड नहीं है, क्योंकि ऐसा लगता है कि यह कहीं और टूटा हुआ है)।

पीएस! मैंने सफारी में ड्रैग और ड्रॉप को ठीक करने की कोशिश करते हुए अपनी साइट पर कुछ बग पेश किए हों, लेकिन मैं अभी उन्हें ठीक करने के लिए बहुत थक गया हूं।

अद्यतन: बस काम पर पुष्टि की है कि ड्रॉप घटना Mac OS X पर सफारी 5.0.2 में आग करता

अद्यतन 2: भी पुष्टि की है कि सब कुछ सफारी पर 5.0.6 के साथ पूरी तरह ठीक काम करता है विन 7, एक ही कंप्यूटर जो 5.1

+6

ओपी का वर्णन करता है त्रुटियों की पुष्टि, सफारी 5.1 (7534.48.3)। क्रोम में ठीक काम किया। –

+0

मेरे लिए समान: Win7 x64 पर सफारी 5.1 (7534.50) के ताजा इंस्टॉल पर ड्रैग-ड्रॉप विफल रहता है, वही पृष्ठ पिछले संस्करण (और क्रोम/एफएफ 6/आईई 9 पर) में ठीक काम करता है। कोई एक्सटेंशन नहीं, खाली कैश। –

+0

सफारी 5.1 (6534.50) के साथ 10.6.8 चल रहा है मेरे लिए काम करता है। विंडोज 7 पर 5.1 करता है। क्या यह शेर मुद्दा है? –

उत्तर

1

के साथ विफल रहता है बस स्पष्ट करने के लिए: आपकी साइट पर जाकर कोई त्रुटि नहीं मिली। कंसोल खोल दिया, कोई त्रुटि नहीं, और सब कुछ डिजाइन के रूप में काम करने के लिए दिखाई दिया। बिना किसी त्रुटि के सभी प्रदान किए गए उदाहरणों का प्रयास किया।

सभी उदाहरण ठीक सफारी संस्करण 5.1 (7534.48.3) काम करते हैं। क्षमा करें, दोस्त - शायद यह एक सेटिंग है जिसे आपने बदल दिया है? >Empty Cache... फिर Safari - - Safari को

जाएं>Reset Safari... पृष्ठ पुनः लोड करने का प्रयास करें:

मुझे एक संभावना का सुझाव देने की अनुमति दें।

संभावना है कि कुछ कैश है जो एक संघर्ष बना रहा है। वहाँ थोड़ी सी में अपनी स्क्रिप्ट के साथ कुछ भी गलत नहीं हो रहा है।

संपादित

कुछ बातें की जांच करने के ...

अपने कार्य आरक्षित नाम शब्दों से युक्त के किसी भी कर रहे हैं? मैं इस किया है, था कि यह किसी भी त्रुटि नहीं फेंक, लेकिन यह बस काम नहीं होगा।

मैं सफारी funcName = function(){} के रूप में लिखा तरीकों नहीं चल के साथ कुछ अजीब मुद्दों किया है।यदि आप उस विधि को पिन कर सकते हैं जो फायरिंग नहीं कर रहा है (जब मैं डीबीजी नामक विकास कर रहा हूं, तो मैं थोड़ा सा कार्य जोड़ता हूं जिसे मैं नीचे जोड़ दूंगा - मूल रूप से, यदि डीबग ध्वज सेट किया गया है, तो आप कंसोल पर लॉग इन कर सकते हैं), आप कर सकते हैं समारोह को फिर से लिखने का प्रयास करें।

// Some sort of boolean flag. 
var debug = true; 

// This is kind of an obvious function, but can be expanded as you like. 
// Little tricks to make life easier. 
function DBG(str) { 
    debug ? console.log(str) : return; 
} 

मैं अभी भी अंत में लगता है कि यह कुछ कैशिंग गलत करने पर निर्भर करता है, लेकिन यह एक कोशिश के लायक है।

+0

हां, यह सब सच होगा यदि मेरी स्क्रिप्ट में समस्याएं आईं, लेकिन किसी कारण से, सफारी का एक साफ इंस्टॉल ड्रैग और ड्रॉप पसंद नहीं करता है (यहां तक ​​कि सफारी दस्तावेज भी नहीं नमूना)। मैं रीसेट करने और खाली करने का कैश करने की कोशिश करूंगा, लेकिन ऐसा लगता है कि किसी चीज का एक निश्चित संयोजन इस बग का कारण बनता है क्योंकि मुझे ऐसा लगता है कि यह एकमात्र ऐसा नहीं है (मेरी मूल पोस्ट पर टिप्पणी) इसका अनुभव कर रहा है। – zatatatata

+0

जो अजीब है - मैं बिना किसी समस्या के सटीक एक ही प्रतिलिपि चला रहा हूं।तार्किक रूप से, के रूप में कुछ मशीनों पर तैयार किया गया है, एक ही सॉफ्टवेयर का उपयोग कर कुछ चलता है, समस्या नहीं स्क्रिप्ट या सॉफ्टवेयर पैकेज है, लेकिन कुछ अस्थिर एक संघर्ष बनाने पहलू होना चाहिए। चीजें जो उपयोगकर्ताओं के बीच बदलती हैं वे हैं: कैश, सेटिंग्स, एक्सटेंशन ... यह एक अच्छा मुद्दा लाता है - क्या आप सफारी में किसी भी एक्सटेंशन का उपयोग कर रहे हैं? 'सफारी'->' प्राथमिकताएं 'जांचें और' एक्सटेंशन 'टैब के अंतर्गत देखें। चूंकि अधिकांश एक्सटेंशन जेएस हैं, इसलिए एक संघर्ष हो सकता है। – stslavik

+0

यह एक साफ इंस्टॉल है (या तो सफारी के पिछले संस्करण नहीं)। कैश को रीसेट करने और खाली करने का कोई प्रभाव नहीं पड़ा, 5.0.6 इंस्टॉल करने का प्रयास किया और सब कुछ पूरी तरह से काम किया, लेकिन 5.1 पर, कोई भाग्य नहीं। यह शायद उन रहस्यमय बगों में से एक रहेगा, जो डेवलपर्स द्वारा ट्रैक करना असंभव है क्योंकि वे दुर्लभ अवसरों पर केवल पर्यावरण परिस्थितियों में ही सतह पर हैं। – zatatatata

5

मैं विंडोज 7 पीसी पर सफारी 5.1.5 (7534.55.3) का उपयोग कर रहा हूं जिसे मैंने अभी दूसरे दिन स्थापित किया है, सफारी के पिछले इंस्टॉलेशन नहीं हैं और मुझे ऑनलाइन एचटीएमएल 5 ड्रैग-एन-ड्रॉप डेमो नहीं मिल रहा है काम।

मैं ड्रैग-एन-ड्रॉप के साथ एक प्रोजेक्ट पर काम कर रहा हूं और मॉडर्नइज़र मुझे बताता है कि मुझे सफारी (Modernizr.draganddrop == true) के साथ जाना अच्छा लगता है, लेकिन जब मैं वास्तव में आइटम ड्रॉप करता हूं तो ड्रॉप इवेंट नहीं होता है आग।

मैंने अलर्ट डिबगिंग और कुछ भी नहीं जोड़ा है।

मेरा परीक्षण दिखाता है कि विंडोज 7 पीसी ड्रॉप इवेंट पर सफारी 5.1.5 (7534.55.3) टूटा हुआ है। अन्य सभी ड्रैग इवेंट काम करने लगते हैं: ड्रैगस्टार्ट, ड्रैगेंड, ड्रैगेंटर, ड्रैगलेव, ड्रैगओवर।

0

मुझे इसी तरह के मुद्दों का सामना करना पड़ा, ड्रॉप इवेंट फायरिंग नहीं हुआ। सफारी स्पष्ट रूप से "ड्रैगओवर" घटना को बाध्य करने की अपेक्षा करता है। जैसे ही मैंने यह भी जोड़ा, यह काम किया। तो ... अगर यह प्रासंगिक है तो मैं साझा कर रहा हूं।

मेरी पहली कोशिश:

$(document).bind 
    drop: (e) -> 
    // This never gets fired in safari (does work in chrome) 
    console.log e.originalEvent.dataTransfer.files 
    false 

मेरी "ठीक":

$(document).bind 
    dragover: (e) -> 
    console.log e 
    false 
    drop: (e) -> 
    // This does get fired (in chrome and safari) 
    console.log e.originalEvent.dataTransfer.files 
    false 
+0

मुझे समझ में आया कि मैंने -1 प्राप्त करने में कुछ गलत किया है? लेकिन मुझे यकीन नहीं है कि क्या ... क्या ऐसा इसलिए है क्योंकि मेरा जवाब ऑफ विषय के रूप में देखा जाता है? यह एक वास्तविक मुद्दा था जिसका सामना मैंने किया और मेरा समाधान था। यह प्रश्न वह था जो Google में आया जब मैंने अपनी समस्या की खोज की। मुझे लगता है कि दूसरों को भी ऐसा ही होगा, इसलिए मैं उन लोगों की मदद करना चाहता था। लेकिन क्या मुझे कुछ बेहतर तरीके से संभालना चाहिए था? –

+0

और आगे पढ़ रहे हैं ... मेरा उत्तर नहीं इसी अवधारणा (अपने बेहतर, मेरा भी बदतर है है) जॉन स्टार Dewars के रूप में है? शायद -1 क्योंकि उसके जवाब बेहतर है? –

+2

शायद कुछ jQuery नफरत। ओह, और वह yaml-esque वाक्यविन्यास क्या है आप वहां जा रहे हैं? रोम में, शुद्ध जावास्क्रिप्ट बोलें। (इसके अलावा, इसके बारे में चिंता करने के लिए नहीं की कोशिश अतः अंक थोड़ा "शोर" कभी कभी इस प्रकार हैं:।। यह झूलों और राउंडअबाउट है) – aaaidan

8

साथ सफारी 5.1.7 मैक परीक्षण:

drop घटना आग देखने के लिए, आपको dragover ईवेंट को संभालना होगा और event.preventDefault() पर कॉल करना होगा।

http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html

मैं अगर यह वास्तव में सवाल हल करती है क्योंकि प्रश्नकर्ता की साइट (कम से कम आज के रूप में) यह करता है पता नहीं है:

यहाँ (काफी मनोरंजक) चर्चा जहाँ मैं इस सवाल का जवाब मिल गया है । यह मेरी मशीन पर ठीक काम करता है (जैसा कि HTML5 डेमो पेज करते हैं)। लेकिन यह इस समस्या के साथ इस धागे में आने में मदद कर सकता है जो इस अवांछित कार्यान्वयन के बारे में नहीं जानता है।

+0

कॉलिंग 'event.preventDefault()' सफारी 5.1.7 7 विन 64 में मेरे लिए काम किया। –

संबंधित मुद्दे