2010-12-16 19 views
12

मैं उस पृष्ठ को एम्बेड कर रहा हूं जिसमें बाहर निकलने वाला पॉप-अप है। जब आप पृष्ठ को बंद करते हैं, तो यह स्वचालित रूप से पॉप-अप विंडो लॉन्च करता है।आईफ्रेम से आने वाले पॉप-अप को कैसे अवरुद्ध करें?

बाहर निकलने पर आईफ़्रेम से आने वाले पॉप-अप को अक्षम कैसे करें?

+2

Parhaps आप अपने प्रश्न –

+4

पर विस्तृत चाहिए एम्बेड न करें वे पृष्ठ जिनके व्यवहार में आपको पसंद नहीं है। – Quentin

+2

उन्हें एक वैध सवाल पूछ रहा है ... "अवांछनीय व्यवहार के साथ कोड एम्बेड न करें" एक बुरा जवाब है मुझे देखने दो .... कैसे आप इस या उस कोड है .... अच्छी तरह से कोड नहीं है यह .. एक प्लम्बर ... वहाँ समस्या हल हो जाते हैं .... मैं एक ही समस्या है ... और मैं अपने मालिक कुछ की तरह कह के लक्जरी नहीं है ... अच्छी तरह से हम सिर्फ नहीं है इसे एम्बेड करें .... पॉल .. क्या आपने कभी इस समस्या को हल किया है ??? ??? –

उत्तर

-5

एक आधुनिक ब्राउज़र का उपयोग करें - वे सभी सभ्य पॉप-अप अवरोधन क्षमताओं

+0

मुझे खेद है - नीचे वोट क्यों? आप पॉप-अप अक्षम करने का तरीका जानना चाहते हैं - एक आधुनिक ब्राउज़र का उपयोग कर इन –

+1

उस मामले में अक्षम कर देता है embedding कोड जो अवांछनीय व्यवहार –

1

मुझे नहीं लगता कि यह संभव है के साथ आते हैं।

  • पहले (और सबसे महत्वपूर्ण बात यह है कि, यदि आईफ्रेम एक अलग डोमेन में है, तो आप अपने डीओएम - जैसे ऑनलोड लोडर नहीं बदल सकते हैं। यदि ऐसा है, तो अन्य दो मुद्दे म्यूट हैं।
  • दूसरा, भले ही आप कर सकें, आपको श्रोताओं को किसी भी तरह से हटाना होगा। अगर श्रोता खिड़की के माध्यम से लोड किया जाता है .ऑनलोड, यह आसान होगा; अन्यथा, इतना नहीं।
  • तीसरे, लंबे समय में इस frame-busting-busters

केवल संभावना मैं देख रहा हूँ प्रकृति में गैर तकनीकी है के रूप में ही हथियारों की दौड़ के लिए नेतृत्व करेंगे: जो कोई भी iframe के भीतर है कि साइट चलाता है अगर वे कर सकते थे के साथ जांच आपके लिए एक विशेष पृष्ठ बनाएं, बिना किसी ऑनलोड लोड पॉपअप के। ज्यादातर मामलों में, या तो

  • क) कुछ विशेष व्यवस्था बनाया जा सकता है (हालांकि नहीं हमेशा मुक्त करने के लिए), या
  • ख) कार्यक्षमता को हटाने की सेवा की शर्तों का उल्लंघन हो सकता है, इस स्थिति में आप चाहते बिना पॉप-अप, किसी और इसी तरह की सुविधा प्रदान करने के लिए देखने के लिए है (और वास्तविक, सबसे सेवाओं एक भी प्रदाता से अधिक है)
0

मैं अगर यह काम करेगा, लेकिन आप डबल Iframing की कोशिश कर सकते यकीन नहीं है। एक मुफ्त ब्लॉगर खाते में साइट को इफ्रैम करें, फिर देरी लोडिंग कोड के साथ ब्लॉगर खाता iframe। इसलिए पेज लोड होने से पहले पॉपअप होगा, अगर यह काम करता है तो मुझे बताएं।

0

असल में, यह संभव है। कम से कम कई मामलों में। अक्सर, आईफ़्रेम में कोड पॉप-अप खोलने के लिए top.window.open(...) जैसे कुछ चल रहा होगा। आप window.open विधि को फिर से परिभाषित कर सकते हैं, इसलिए यह अभी भी मौजूद है, लेकिन विंडो नहीं खोलता है। उदा .:

` window.alias_open = window.open;

window.open = समारोह (यूआरएल, नाम, चश्मा, की जगह) { // कुछ न करें, या कुछ स्मार्ट करना ... } `

आप अभी भी चाहते हैं कुछ पॉप-अप को खोलने के लिए , आप window.open के शरीर के भीतर urls whitelist कर सकते हैं, और आवश्यकतानुसार alias_open पर कॉल करें।

8

यदि आप पीओपी अप विज्ञापनों जैसे किसी वेबसाइट से कुछ अवरुद्ध करना चाहते हैं या किसी वेबसाइट से आने वाले कुछ को IFRAME में दिखा रहे हैं - यह काफी आसान है।

एक framefilter.php और javascriptfilter.php अपने iframe अंक जो करने के लिए सुनिश्चित करें। आप इसे अपनी जरूरतों को पूरा करने के लिए संशोधित कर सकते हैं जैसे कि ऑनलोड ब्ला ब्लाह आदि। लेकिन जैसा/है - यह थोड़ी देर के लिए मेरे लिए ठीक काम कर रहा है। आशा करता हूँ की ये काम करेगा।

इस के साथ अपने मानक IFRAME एचटीएमएल बदलें:

<IFRAME SRC="http://www.yourdomainhere.com/framefilter.php?furl=http://www.domainname.com" WIDTH=1000 HEIGHT=500> 
If you can see this, your browser doesn't 
understand IFRAMES. However, we'll still 
<A HREF="http://www.domainname.com">link</A> 
you to the page. 
</IFRAME> 

Framefilter.php

 <?php 

//Get the raw html. 
$furl=trim($_GET["furl"]); 
$raw = file_get_contents($furl); 

$mydomain="http://www.yourdomainhere.com/"; 

//Kill anoying popups. 
$raw=str_replace("alert(","isNull(",$raw); 
$raw=str_replace("window.open","isNull",$raw); 
$raw=str_replace("prompt(","isNull(",$raw); 
$raw=str_replace("Confirm: (","isNull(",$raw); 

//Modify the javascript links so they go though a filter. 
$raw=str_replace("script type=\"text/javascript\" src=\"","script type=\"text/javascript\" src=\"".$mydomain."javascriptfilter.php?jurl=",$raw); 
$raw=str_replace("script src=","script src=".$mydomain."javascriptfilter.php?jurl=",$raw); 

//Or kill js files 
//$raw=str_replace(".js",".off",$raw); 

//Put in a base domain tag so images, flash and css are certain to work. 
$replacethis="<head>"; 
$replacestring="<head><base href='".$furl."/'>"; 
$raw=str_replace($replacethis,$replacestring,$raw); 

//Echo the website html to the iframe. 
echo $raw; 

?> 

javascriptfilter.php

<?php 

//Get the raw html. 
$jurl=trim($_GET["jurl"]); 
$raw = file_get_contents($jurl); 

//Note, if trickyness like decode detected then display empty. 
if(!preg_match("decode(", $raw)){ 

//Kill anoying popups. 
$raw=str_replace("alert(","isNull(",$raw); 
$raw=str_replace("window.open","isNull",$raw); 
$raw=str_replace("prompt(","isNull(",$raw); 
$raw=str_replace("Confirm: (","isNull(",$raw); 

//Echo the website html to the iframe. 
echo $raw; 

} 

?> 
+0

आप बदलना चाहिए भी 'isNaN (' कारण 'IsNull()' परिभाषित नहीं है है नहीं है। –

+0

आपका बदले समारोह नाम और कोष्ठक के बीच रिक्त स्थान के साथ एक मामले पर विचार करना चाहिए उपयोग करने के लिए बेहतर होगा:। '$ कच्चे = preg_replace (" # चेतावनी [] {0,} \\ (# मैं "," isNaN (", $ कच्चा); ' –

+0

आपका preg_match मान्य नहीं है। होना चाहिए:' if (खाली (preg_match ("# decode \\ (# i", $ raw)) {' –

2

स्थापना सैंडबॉक्स पर विशेषता IFrame तत्व काम करना चाहिए।

3

काफी एक पुराने पूछना है, लेकिन मैंने सोचा कि मैं एक नए समाधान की पेशकश करता हूँ के बाद से इस गूगल में शीर्ष परिणाम है।

आप खोलने खिड़कियों से एक iframe को ब्लॉक करना चाहते हैं, तो आप नए HTML5 "सैंडबॉक्स" अपने iframe पर विशेषता का उपयोग कर सकते हैं।

https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe

यह कुछ भी करने से यह रखना चाहिए (जावास्क्रिप्ट जो पेज के लिए आवश्यक हो सकता है चल रहा है को छोड़कर सही ढंग से कार्य करने के लिए):

<iframe sandbox="allow-scripts" src="your/url/here"></iframe> 
संबंधित मुद्दे