トップ回答者
JavaScriptのエラー

質問
-
いつもお世話になります。Windows7 VisualStudio2010 ExpressEditioで開発しています。
C#でブラウザを作っていて、JavaScriptのエラーに困っています。Javascriptのエラーです。
これは、http://blog.btmup.com/javascript/ie6-ie7-expected-identifier-string-or-number-script-error.htmlによると、
[,]によるエラーのようです。
たしかにそのjavascriptをダウンロードして見ると、{strip:/<[a-zA-Z\/][^<>]*>/g,clean:/[0-9.(),;:!?%#$¿'"_+=\\/-]+/g,count:/\S\s+/g,}というように、/gのあとに[,]があり、これが問題を起こしていると思われます。
これをオミットする方法をご教示いただけないでしょうか。
これまでにやってみたのは、
(1)webBrowser.ScriptErrorsSuppressed = true;
これを設定すると、エラーは出なくなるが、Basic認証のウィンドウも出なくなって、結局そのページにアクセスできない。
(2)DocumentCompletedでスクリプトを削除してみる。
HtmlElementCollection scripts = webBrowser.Document.GetElementsByTagName("script");
foreach (HtmlElement script in scripts) if (script.GetAttribute("src").Contains("word-count.jp"))
script.SetAttribute("src","");
だめ。
DocumentCompleted以前にエラーが発生。
(3)private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)で同様。
だめ。エラーが発生。
(4)private void webBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e) {で同様。
だめ。エラーが発生。
という状態で、手詰まりになっています。
アドバイスいただければと存じます。
回答
すべての返信
-
> たしかにそのjavascriptをダウンロードして見ると、
> {strip:/<[a-zA-Z\/][^<>]*>/g,clean:/[0-9.(),;:!?%#$¿'"_+=\\/-]+/g,count:/\S\s+/g,}
> というように、/gのあとに[,]があり、これが問題を起こしていると思われます。それは正規表現のパターンのようで、そもそも、参考にされている URL の記事の JavaScript のカンマ ( , ) とは何も関係ないように見えます。
考え違い、見当違いではないですか? もし、そうでなかったら失礼しました。
- 編集済み SurferOnWww 2014年6月6日 11:40 誤記訂正:CSS ⇒ JavaScript
-
SurferOnWwwさん、早速のご回答ありがとうございます。
おっしゃるように、それほどwebに詳しいわけではないので、ピント外れなことをしているかもしれません。
しかも、よく見ると、g,が複数ありますね。
補足します。
エラーは、「識別子、文字列または数がありません」というものでした。これで検索して、該当のページを発見しました。
エラーのときに行数と文字数を表示してくれたので、そのJavaScriptを見ると、最後のg,}の[,]がその文字に相当するようでした。
おっしゃるように、わたしもこれは、正規表現の[,]だろうとは思ったのですが、指定の最後にあることから、「識別子、文字列または数がありません」というエラーにつながるのだろうと推測しました。
というわけで、あらためて、これをオミットする方法のヒントでもいただけないでしょうか。JavaScriptはそれほど堪能ではないのですが、
{strip:/<[a-zA-Z\/][^<>]*>/g,clean:/[0-9.(),;:!?%#$¿'"_+=\\/-]+/g,count:/\S\s+/g,}
を分解すると、たぶん、
{ 開始
strip: コマンド
/ 正規表現の開始
<[a-zA-Z\/][^<>]*> 正規表現
/ 正規表現の終了
g globalのg
, コマンドの区切り
clean: コマンド
/ 正規表現の開始
[0-9.(),;:!?%#$¿'"_+=\\/-]+ 正規表現
/ 正規表現の終了
g globalのg
, コマンドの区切り
count: コマンド
/ 正規表現の開始
\S\s+ 正規表現
/ 正規表現の終了
g globalのg
, コマンドの区切り。このあとに、コマンドがないので、このカンマで「識別子、文字列または数がありません」とエラーになる。
} 終了
と理解しています。- 編集済み skyrabbit 2014年6月6日 23:56