WKWebView: BLOB URL को कैसे संभालना है

0
Mickael Belhassen 2020-05-09 19:20.

मेरे पास मेरा है WKWebViewजब मैं इसे डाउनलोड करने के लिए एक फ़ाइल पर क्लिक करता हूं। मेरे पास पॉपअप लेखन है:

URL खोलने के लिए कोई एप्लिकेशन कॉन्फ़िगर नहीं किया गया है blob:https// ...

मैं एक कस्टम यूआरएल स्कीम रजिस्टर करने की कोशिश की blobकरने के लिए WKWebView, अनुप्रयोग क्रैश कह रही है कि इस योजना के पहले से ही डिफ़ॉल्ट रूप से समर्थित है।

हालाँकि, जब मैं फ़ाइल पर क्लिक करता हूँ, तो प्रतिनिधि को नहीं बुलाया जाता है:

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)`

इसलिए मुझे यह भी पता नहीं चल पाता है कि जावास्क्रिप्ट को स्कैन करके फ़ाइल को डाउनलोड करने का प्रयास करने के लिए एक बूँद यूआरएल कब क्लिक किया जाता है।

मेरा आवेदन macOS के लिए है।

1 answers

0
user120242 2020-05-10 03:14.

ध्यान दें कि यह वास्तव में एक राउंडअबाउट हैक है। सभी href को स्कैन करें और डेटारी के साथ पाए गए किसी भी ब्लॉन्ड यूआरएल को बदलें। EDIT: इसे चालू दिखाने के लिए अपडेट किया गया

function blobToDataURL(blob, callback) {
    var a = new FileReader();
    a.onload = function(e) {callback(e.target.result);}
    a.readAsDataURL(blob);
}
// not sure what elements you are going to intercept:
document.querySelectorAll('a').forEach(async (el)=>{
   const url = el.getAttribute('href');
   if( url.indexOf('blob:')===0 ) {
       let blob = await fetch(url).then(r => r.blob());
       blobToDataURL(blob, datauri => el.setAttribute('href',datauri));
   }
});

b=new Blob([new Int8Array([1,2,3,4,5,6,7,8,9,10]).buffer]);
test.href=URL.createObjectURL(b);
b=new Blob([new Int8Array([31,32,33,34,35]).buffer]);
test1.href=URL.createObjectURL(b);
b=new Blob([new Int8Array([51,52,53,54]).buffer]);
test2.href=URL.createObjectURL(b);



function blobToDataURL(blob, callback) {
    var a = new FileReader();
    a.onload = function(e) {callback(e.target.result);}
    a.readAsDataURL(blob);
}

document.addEventListener('click', function(event) {
  event.preventDefault();
  if ( event.target.matches('a[href^="blob:"]') )
     (async el=>{
       const url = el.href;
       const blob = await fetch(url).then(r => r.blob());
       blobToDataURL(blob, datauri => el.href=datauri);
     })(event.target);
});

// not sure what elements you are going to intercept:
/*document.querySelectorAll('a').forEach(async (el)=>{
   const url = el.href;
   if( url.indexOf('blob:')===0 ) {
       let blob = await fetch(url).then(r => r.blob());
       blobToDataURL(blob, datauri => el.href=datauri);
   }
});*/
<a id="test">test</a>
<a id="test1">test</a>
<a id="test2">test</a>

क्लिक पर डेटा यूरी रूपांतरण का उदाहरण:

b=new Blob([new Int8Array([1,2,3,4,5,6,7,8,9,10]).buffer]);
test.href=URL.createObjectURL(b);
b=new Blob([new Int8Array([31,32,33,34,35]).buffer]);
test1.href=URL.createObjectURL(b);
b=new Blob([new Int8Array([51,52,53,54]).buffer]);
test2.href=URL.createObjectURL(b);



function blobToDataURL(blob, callback) {
    var a = new FileReader();
    a.onload = function(e) {callback(e.target.result);}
    a.readAsDataURL(blob);
}

document.addEventListener('click', function(event) {
  if ( event.target.matches('a[href^="blob:"]') ) {
     event.preventDefault();
     (async el=>{
       const url = el.href;
       const blob = await fetch(url).then(r => r.blob());
       blobToDataURL(blob, datauri => window.open(el.href=datauri,el.target||'_self'));
     })(event.target);
   }
});

// not sure what elements you are going to intercept:
/*document.querySelectorAll('a').forEach(async (el)=>{
   const url = el.href;
   if( url.indexOf('blob:')===0 ) {
       let blob = await fetch(url).then(r => r.blob());
       blobToDataURL(blob, datauri => el.href=datauri);
   }
});*/
<a id="test">test</a>
<a id="test1">test</a>
<a id="test2">test</a>

Related questions

MORE COOL STUFF

जाना दुग्गर: प्यार के बारे में उसने जो कुछ कहा है और 'एक' को खोजने के लिए उसकी 5 साल की अवधि

जाना दुग्गर: प्यार के बारे में उसने जो कुछ कहा है और 'एक' को खोजने के लिए उसकी 5 साल की अवधि

जाना दुग्गर प्यार की तलाश के बारे में खुलकर बात करती रही हैं। यहां वह सब कुछ है जो उसने विषय और शादी के लिए पांच साल की अवधि के बारे में कहा है।

सैम ह्यूगन को ठीक-ठीक पता है कि वह 'आउटलैंडर' सेट से क्या लेंगे - 'जब मैं उन्हें पहनता हूं तो मुझे ऐसा लगता है जैसे मैं जेमी हूं'

सैम ह्यूगन को ठीक-ठीक पता है कि वह 'आउटलैंडर' सेट से क्या लेंगे - 'जब मैं उन्हें पहनता हूं तो मुझे ऐसा लगता है जैसे मैं जेमी हूं'

'आउटलैंडर' स्टार सैम ह्यूगन ने हाल ही में खुलासा किया कि वह सेट से जेमी फ्रेजर को याद करने के लिए क्या लेंगे, जिस भूमिका ने उन्हें स्टार बनाया था।

फैब फोर इनसाइडर के अनुसार, शुरुआती बीटल्स गाना बैंड के 'सबसे रोमांचक प्रदर्शनों' में से एक था।

फैब फोर इनसाइडर के अनुसार, शुरुआती बीटल्स गाना बैंड के 'सबसे रोमांचक प्रदर्शनों' में से एक था।

'शी लव्स यू' एक घंटे में लिखा गया, एक दिन में रिकॉर्ड किया गया और यह द बीटल्स का उनके करियर का सर्वश्रेष्ठ प्रदर्शन वाला गाना था।

डॉली पार्टन ने अपनी 'अमान्य' दादी की मदद की, जब अन्य पोते-पोतियों में से कोई भी ऐसा नहीं करता था—वह उसके साथ मज़ाक भी करती थी

डॉली पार्टन ने अपनी 'अमान्य' दादी की मदद की, जब अन्य पोते-पोतियों में से कोई भी ऐसा नहीं करता था—वह उसके साथ मज़ाक भी करती थी

डॉली पार्टन और उनकी दादी बेसी के बीच एक विशेष रिश्ता था। दादी पार्टन बहुत बीमार थीं, लेकिन उसने डॉली को उनके साथ मज़ाक करने से नहीं रोका।

विश्व की सबसे कठोर लकड़ी कौन सी है?

विश्व की सबसे कठोर लकड़ी कौन सी है?

आप सोच सकते हैं कि ओक या हिकॉरी कठोर होती है, लेकिन जब दुनिया की सबसे कठोर लकड़ी की बात आती है, तो वे उसके आसपास भी नहीं फटकतीं।

समुद्र की गहराई में छिपे 10 सबसे डरावने समुद्री जीव

समुद्र की गहराई में छिपे 10 सबसे डरावने समुद्री जीव

समुद्र खूबसूरती से भरपूर है, लेकिन इसमें धरती के कुछ सबसे डरावने समुद्री जीव भी छिपे हैं। इनमें से कई जीव समुद्र की सतह से बहुत नीचे, गहरे समुद्र की अंधेरी, उच्च दबाव वाली दुनिया में छिपे रहते हैं।

Minecraft में 10 सर्वश्रेष्ठ तलवार जादू

Minecraft में 10 सर्वश्रेष्ठ तलवार जादू

अगर आप दुश्मन भीड़ से लड़ रहे हैं या PvP परिदृश्यों के लिए तैयारी कर रहे हैं, तो Minecraft में उपलब्ध सर्वोत्तम तलवारों के जादू को जानना आपको एक बड़ी बढ़त दिला सकता है। तलवारों पर जादू करने से आप ज़्यादा नुकसान पहुँचा सकते हैं, भीड़ पर पड़ने वाले प्रभाव को बढ़ा सकते हैं और अपनी तलवार की टिकाऊपन बढ़ा सकते हैं।

13 समाजवादी देश जो एक-दूसरे से बिल्कुल अलग दिखते हैं

13 समाजवादी देश जो एक-दूसरे से बिल्कुल अलग दिखते हैं

जब लोग समाजवादी देशों की बात करते हैं, तो अक्सर उनकी कल्पना पूर्ण सरकारी नियंत्रण और निजी स्वामित्व के अभाव की होती है। लेकिन व्यवहार में, समाजवादी अर्थव्यवस्थाएँ व्यापक रूप से भिन्न होती हैं।

द बियर रिकैप: क्या मार्कस शिकागो का सबसे दयालु, सबसे कोमल, सबसे ईमानदार आदमी है?

द बियर रिकैप: क्या मार्कस शिकागो का सबसे दयालु, सबसे कोमल, सबसे ईमानदार आदमी है?

'चिल्ड्रन' में एक बड़े नाम की कैमियो और कुछ विनाशकारी खबरें सामने आईं

क्या आप 9,800 डॉलर में इस सात-सीटर 2008 टोयोटा RAV4 में इसे पैक करेंगे?

क्या आप 9,800 डॉलर में इस सात-सीटर 2008 टोयोटा RAV4 में इसे पैक करेंगे?

दावा किया जाता है कि यह RAV4 उत्कृष्ट स्थिति में है और म्यूजिकल चेयर के खेल के लिए तैयार है।

ह्यूस्टन की गर्मी के दौरान अमेज़न डिलीवरी वैन में भीषण विस्फोट

ह्यूस्टन की गर्मी के दौरान अमेज़न डिलीवरी वैन में भीषण विस्फोट

ड्रोन फुटेज में अग्निशमन कर्मियों को आग बुझाने के लिए संघर्ष करते हुए देखा गया।

मार्वल का ब्लैक पैंथर शो अब तक का सबसे महत्वपूर्ण एनिमेटेड शो होगा

मार्वल का ब्लैक पैंथर शो अब तक का सबसे महत्वपूर्ण एनिमेटेड शो होगा

आइज़ ऑफ वकांडा सीधे तौर पर MCU से जुड़ा हुआ है, साथ ही इसमें एक्स-मेन '97, व्हाट इफ..., डेयरडेविल, आदि पर अपडेट भी शामिल हैं।

जॉन क्लीज़ की पत्नी कौन हैं? जेनिफर वेड के बारे में सब कुछ जानें

जॉन क्लीज़ की पत्नी कौन हैं? जेनिफर वेड के बारे में सब कुछ जानें

जॉन क्लीज़ ने 2012 में अपनी पत्नी जेनिफर वेड से विवाह किया। जॉन क्लीज़ की पत्नी जेनिफर वेड के बारे में जानने योग्य सब कुछ यहां है।

पैटन ओसवाल्ट की पत्नी कौन है? मेरेडिथ सेलेन्गर के बारे में सब कुछ

पैटन ओसवाल्ट की पत्नी कौन है? मेरेडिथ सेलेन्गर के बारे में सब कुछ

पैटन ओसवाल्ट ने 2017 में अपनी पत्नी, साथी अभिनेत्री मेरेडिथ सालेंगर से शादी की। यहां पैटन ओसवाल्ट की पत्नी मेरेडिथ सालेंगर के बारे में जानने योग्य सब कुछ है।

माइकल सी. हॉल की पत्नी कौन है? मॉर्गन मैकग्रेगर के बारे में सब कुछ

माइकल सी. हॉल की पत्नी कौन है? मॉर्गन मैकग्रेगर के बारे में सब कुछ

माइकल सी. हॉल की शादी 2016 से उनकी पत्नी मॉर्गन मैकग्रेगर से हुई है। माइकल सी. हॉल की पत्नी के बारे में जानने के लिए यहां सब कुछ है।

जॉन ओलिवर की पत्नी कौन है? केट नोर्ले के बारे में सब कुछ

जॉन ओलिवर की पत्नी कौन है? केट नोर्ले के बारे में सब कुछ

जॉन ओलिवर और उनकी पत्नी केट नोर्ले की शादी 2011 से हुई है। जॉन ओलिवर की पत्नी के बारे में जानने के लिए यहां सब कुछ है।

सर्वनाम सुपर डरावने हैं

यह मुझ पर अचानक प्रहार करता है जैसा कि यह अक्सर करता है यह फिर से बीच का रास्ता है <नहीं, वह नहीं जो प्रशांत में आप मैरून हैं, जो कार्निवल में है> हर हेडलाइन जोर से… ..

अपने लेखन कौशल में सुधार करने के 3 सिद्ध तरीके

ऐसा करने में आपकी मदद करने के लिए लेखन के लाभ, और रणनीतियाँ

अपने लेखन कौशल में सुधार करने के 3 सिद्ध तरीके

2022 में, GPT-3 के जारी होने के साथ, लेखन कौशल कम महत्वपूर्ण होता जा रहा है। एआई के साथ, खराब लेखन वाले लोग भी गुणवत्तापूर्ण कर्मचारी तैयार कर सकते हैं।

द स्लो इरोसियन: अनवीलिंग द वे तरीके पीपल वेस्ट अवे अवे करियर

द स्लो इरोसियन: अनवीलिंग द वे तरीके पीपल वेस्ट अवे अवे करियर

आज की तेज-तर्रार और प्रतिस्पर्धी दुनिया में, किसी का करियर व्यक्तिगत विकास, वित्तीय स्थिरता और समग्र जीवन संतुष्टि में महत्वपूर्ण भूमिका निभाता है। हालांकि, कई लोग खुद को ठहराव और असंतोष के एक अथक चक्र में फंसा हुआ पाते हैं, धीरे-धीरे अपने पेशेवर जीवन को बर्बाद कर रहे हैं।

क्या एक पॉडकास्ट प्रभावशाली बनाता है?

क्या एक पॉडकास्ट प्रभावशाली बनाता है?

पिछले हफ्ते मैंने एक प्रेस विज्ञप्ति देखी, जिसे PressGazette (एक ब्रिटिश मीडिया समाचार वेबसाइट) के माध्यम से भेजा गया था। लेख ने घोषणा की कि एकास्ट, स्कैंडी पॉडकास्ट होस्टिंग और विज्ञापन कंपनी, पॉडकास्टिंग में "शायद सबसे प्रभावशाली" प्रकाशकों के एक संघ का नेतृत्व करेगी।

Language