質問者
JavaScriptを使ったポップアップウィンドウを表示しないようにしたい

質問
-
いつもお世話になります。
VisualC# 2010を使ってWindows7で開発しています。
WebBrowserについて質問があります。Form上にWebBrowserをはりつけ、インターネットにアクセスしています。
JavaScriptを使ったポップアップウィンドウを表示しないようにしたいと考えています。htmlでのスクリプトは、次のようなものです。
<script language="javascript">
lbAlert('・予約した資料が届きました。ご確認ください。<br>'+' '+'\r\n'+' '+'\r\n'+' ','');
submitFlg = true;
var gamenid = document.LBForm.gamenid.value;
if( gamenid != 'tiles.WMnuTop'){
document.all.prev.innerHTML="<a href='#' class='goback' onclick ='javascript:back()'>戻る</a>";
}
</script>これに対して、
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
HtmlElementCollection alearts = webBrowser.Document.GetElementsByTagName("script");
foreach (HtmlElement aleart in alearts)
if (aleart.OuterHtml != null && aleart.OuterHtml.Contains("予約した資料が届きました。"))
aleart.OuterHtml = "";
}
と指定して、空にしようとしています。ところが、
(1)DocumentCompletedすると、直後にJavaScriptが発動するようで、ポップアップが表示されてしまいます。
(2)その後、この条件の部分がヒットするのですが、
aleart.OuterHtml = "";
にしても、空になりません。このような場合、どのような処理をしたら、ポップアップウィンドウを消すことができるか、ご示唆いただけないでしょうか。
すべての返信
-
K.TakaokaさんのこのコメントによるとOnShowMessage()により制御できるそうです。
-
t.jinさん、ありがとうございます。
さっそく、Navigatedイベントを作成し、そちらで実行しました。
いくつかのサイトで試したところ、うまくいくところもありましたが、いちばん実現したいと考えていた図書館のサイトでは、依然としてポップアップを表示する状態です。
前提条件のほうがダメなのかと思って確認したところ、このページは、
html
head
/headtable
thead
/thead
tbody
/tbody/table
script
最初に提示した該当のスクリプト
/script
/htmlという順番でした。
そもそもbodyタグが存在せず、スクリプトはbodyタグではなく、その外でした。
このような場合には、対応方法はあるものでしょうか? -
t.jinさん、ありがとうございます。
さっそく、Navigatedイベントを作成し、そちらで実行しました。
いくつかのサイトで試したところ、うまくいくところもありましたが、いちばん実現したいと考えていた図書館のサイトでは、依然としてポップアップを表示する状態です。
前提条件のほうがダメなのかと思って確認したところ、このページは、
html
head
/headtable
thead
/thead
tbody
/tbody/table
script
最初に提示した該当のスクリプト
/script
/htmlという順番でした。
そもそもbodyタグが存在せず、スクリプトはbodyタグではなく、その外でした。
このような場合には、対応方法はあるものでしょうか? -
デバッグ実行で次の1行のあとに、aleart に値は入ってきていますでしょうか?
foreach (HtmlElement aleart in alearts)
aleart のOuterHtmlにスクリプトが入ってきているようであれば、上手くいく気がします。
ご参考までに、次のHTMLに対して実行したところポップアップは表示されないようでした。
<html>
<head>
</head>
<table>
<thead>
</thead>
<tbody>
...</tbody>
</table>
<script language="javascript">
alert('予約した資料が届きました。');
</script>
</html>- 編集済み t.jin 2012年11月28日 2:44 HTMLサンプルを修正
-
佐祐理さん、コメントありがとうございます。
ご示唆いただいた質問のところ、ほとんど同様のことをされているなと思いました。
質問するときには気づきませんでした。すみません。そちらを読んだのですが、まだわからないところがあります。
-----------
javascript の alert は UI オブジェクトの OnShowMessage イベントを作成しますので、OnShowMessage イベントでその表現を差し替えることができます。
-----------
とのことですが、具体的な手順はどのようになりますか?
C# OnShowMessage()
でGoogleで探して上位10サイトを見てみたのですが、それらしい情報を見つけることができませんでした。
もしなにか情報をおもちでしたら、教えていただけると幸いです。 -
なるほど、こちらのAnswer 1とかですね。作り方に関する詳しい説明はWebBrowser Customizationですね。
関数名しか挙げられてなく、しかもその名称が間違っているとなるとさっぱりわかりませんでした。
- 回答の候補に設定 佐祐理 2012年12月19日 3:57