यदि आपको अलर्ट के पाठ को पता है और गंदे होने पर ध्यान न दें तो आपको कोई समस्या नहीं होनी चाहिए।
आप अपनी खुद की साथ आइफ्रेम खिड़की के अलर्ट को ओवरराइड कर सकते हैं और के प्रभाव के लिए कुछ करना ..
document.getElementById("InnerFrameName").contentWindow.alert = function(){
if (arguments[0].toLowerCase() == "innerframe alert text")
return; //supress
else
alert(arguments[0]);
};
संपादित करें: मैं एक प्रॉक्सी हैंडलर (यह asp.net/c# में है, लेकिन साथ एक छोटी सी परीक्षण किए गए आपको विचार मिलना चाहिए) ...
मेरे परीक्षण में बाहरी पृष्ठ एक बटन के साथ एक डब्ल्यू 3 पृष्ठ है जो एक चेतावनी प्रदर्शित करता है, अलर्ट अब उपयोगकर्ता परिभाषित फ़ंक्शन के माध्यम से पारित किया जाता है।
मुझे यकीन है कि यह बहुत गंदा है तो आप प्राप्त करना चाहते हैं।
पृष्ठ:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hello From MyPage</title>
<script type="text/javascript">
function frameLoaded() {
document.getElementById("InnerFrameName").contentWindow.alert = function() {
if (arguments[0].toLowerCase() == "i am an alert box!!") {
alert("MESSAGES WOULD BE SUPRESSED: " + arguments[0]);
return; //supress
} else {
alert(arguments[0]);
}
};
}
</script>
</head>
<body onload="alert('Hello from an unsupressed top level frame message!');">
<form id="form1" runat="server">
<div>
<h1>Internal Page (Top Level)</h1>
<hr />
<iframe id="InnerFrameName" onload="frameLoaded();" src="PageProxy.ashx?externalURI=http://www.w3schools.com/JS/tryit_view.asp?filename=tryjs_alert"
style="width: 800px; height: 600px;">Derp!...</iframe>
</div>
</form>
</body>
</html>
प्रॉक्सी हैंडलर:
<%@ WebHandler Language="C#" Class="PageProxy" %>
using System;
using System.Web;
public class PageProxy : IHttpHandler {
public void ProcessRequest (HttpContext context) {
byte[] externalPage = new System.Net.WebClient().DownloadData(context.Request["externalURI"]);
context.Response.OutputStream.Write(externalPage, 0, externalPage.Length);
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
स्रोत
2009-02-19 05:08:48
मेरे संदेह की पुष्टि की। मुझे इसके लिए जावास्क्रिप्ट के अतिरिक्त या इसके बजाय कुछ उपयोग करने की आवश्यकता होगी। – moffdub
जावास्क्रिप्ट थ्रेड को रोक नहीं दिया गया है, संदेश अभी भी पंप किए गए हैं और किसी भी टाइमर या एसिंक परिवर्तन अभी भी ईवेंट हैंडलर को आग लगाएंगे, और उन हैंडलरों में जेएस अभी भी चलेंगे। –