javascriptの実体参照とは?

このQ&Aのポイント
  • 現在googlechromeの拡張の開発の為に、javascriptにチャレンジしています。
  • 不特定のサイトにアクセスした時、ソースを取得して、正規表現でマッチするURLがあればそのURLにジャンプするといった事です。
  • URLの中に「&」があれば「&amp」に変換されてしまい、それを回避する方法についての質問です。
回答を見る
  • ベストアンサー

javascriptの実体参照?

現在googlechromeの拡張の開発の為に、javascriptにチャレンジしています。 やりたいことは不特定のサイトにアクセスした時、ソースを取得して、正規表現でマッチするURLがあればそのURLにジャンプするといった事です。 その際、URLの中に「&」があれば「&amp」に変換されてしまいます。 下記の記述で「document.write(xURL);」に書き換えると「&」のままで思い通りに出力できましたが、「location.href = xURL;」の場合は「&amp」に変換されてしまいます。 ジャンプするサイトが対応していないか、chromeが対応していないか、そもそもjavascriptの記述が間違っているか、判断がつきません。 ご教授頂ければ幸いです。宜しくお願い致します。 //////////////////// ソースから検索してジャンプしたいURLは「http://abc.com/(ワイルドカード)123」のようなものです。 xSource = document.getElementsByTagName("html")[0].innerHTML; if ((xURL = xSource.match(/http:\/\/abc\.com\/.*?123/)) != null) { location.href = xURL; }; ////////////////////

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

<!DOCTYPE html> <title></title> <meta charset="utf-8"> <body> <h1>Test</h1> <p> <a href="http://abc.com?a=1&b=2&c=3">abc</a> <a name="a">abc</a> <a id="b">abc</a> </p> <script> var targetURL = 'http://abc.com/?*a=1'; var URL = Array.prototype.filter.call ( document.getElementsByTagName ('A'), function (e) { return this.test (e.href) }, new RegExp ('^' + targetURL.replace (/([\/\.?])/g, '\\$1').replace ('*', '.*?')) ); alert(URL.length ? URL[0].href : 'none'); </script>

fdafgagvrv
質問者

お礼

誠にありがとう御座います。 とても参考になりました。 少し難しかったので、自分なりに解釈して無事動くものが完成しました。 しかし、また別の問題ができました。 こちらの質問にもお答え頂ければ幸いです。 http://okwave.jp/qa/q7741203.html 宜しくお願い致します。

関連するQ&A

  • HTMLのソースの取得・正規表現

    プログラム自体始めて間もない初心者です。 javascriptでHTMLのソースを取得して、正規表現でマッチしたURLを書き出したいと思います。 取得したソースから正規表現で抽出はできましたが、さらに手を加えると機能しませんでした。 下記test-1では「http://abc.com/」と表示されましたので思った通りに動きました。 しかし、test-2では「http」と表示されると思っていたところ、表示されませんでした。 この違いはなんでしょうか? //////////////////// test-1 <html> <head> <script type="text/javascript"> function test(){ aaa = document.getElementsByTagName("html")[0].innerHTML; bbb = aaa.match(/http:\/\/abc\.com\//); document.write(bbb); } </script> </head> <body> <input type="button" onclick="test()"> <a href="http://abc.com/"> </body> </html> //////////////////// test-2 function test(){ aaa = document.getElementsByTagName("html")[0].innerHTML; bbb = aaa.match(/http:\/\/abc\.com\//); ccc = bbb.match(/http/); document.write(ccc); }

  • chrome拡張 javascript

    現在javascriptでGoogleChromeの拡張を開発中です。 サイトにアクセスした際「http://abc.com/(ワイルドカード)3」があればクリックしたいと思います。 ローカルでは動きましたが、実際のサイトで試してみるとうまくいきません。 DOMの読み込みのタイミングかと思いましたが、それも違っていたようで、正規表現の部分が少し怪しいです。 chromeの拡張のmanifestのrun_atはデフォルトです。 javascriptの記述が悪いのか、chromeの仕様なのか、サイトが対応できないのか、ご教授頂ければ幸いです。 宜しくお願い致します。 <html> <head> </head> <body> <a href="http://abc.com/">abc</a> <a href="http://abc.com/?a=1&b=2&c=3">abc</a> <script type="text/javascript"> targetClick("http://abc.com/*3"); function targetClick(targetURL){ splitURL = targetURL.split("*"); xLink = document.getElementsByTagName("a"); for (i = 0; i < xLink.length; i++) { xHref = xLink[i].getAttribute("href"); if (xHref.match(new RegExp("^" + splitURL[0])) != null) { if (xHref.match(new RegExp(splitURL[1] + "$")) != null) { xClick = document.createEvent("MouseEvents"); xClick.initMouseEvent("click",true,true,window,1,0,0,0,0,false,false,false,false,0,null); xLink[i].dispatchEvent(xClick); } } } } </script> </body> </html>

  • javascriptの動作について

    こんばんは。 直接アドレス指定などしてきたものについては、 トップページへ飛ばすことをしようと思ったのですが、 以下の記述だと、IE8では動作しましたが、GoogleCrome(11.0.696.77)、firefox(3.6.0)、safari では動作しませんでした。(location.hrefがダメなんでしょうか?) 解決策・回避策などあれば教えてください。 よろしくお願いします。 <script language="JavaScript" type="text/JavaScript"> <!-- var url; url = document.referrer; if(url != 'http://xxxxxxxxx'/){ location.href('http://xxxxxxxxxxxxx'); } // --> </script>

  • JavaScriptを追加したい

    こんにちは。 こちら(ttp://f22.aaa.livedoor.jp/~sncspt/)のサイトさんの配布している「SNC THREADBBS 3」を使用したいのですが、その中に ***** <script type="text/javascript"> <!-- var url = "http://サイトアドレス"; if((document.referrer == "") || (document.referrer.match(url) == null)) { window.location.href = url; } // --> </script> ***** もしくは、 ***** <LINK rel="stylesheet" TYPE="text/css" HREF="javascript.js"> ***** のように入れたいのですが、どこにどう入れたらいいか分かりません。 そのサイトさんで聞けばいいのかもしれませんが、少し急いでいますのでどなたかアドバイスをお願いしたいです。 よろしくお願いします。

  • 【JavaScript】実体参照符号化なしでそのまま出力したい

    JavaScript初心者です。 document.write()でhtmlかき出しをする際、 そのまま出力されるのではなくある程度の実体参照符号化が行われているということがわかりました。 例えば、 ・document.write("<>&");   → &lt;&gt;&amp ・document.write("<br />"); → <br> ・document.write("</3>");  → <!--3--> といった具合に加工されているようです。(あくまでhtmlソースの話です) かゆいところに手が届くいい機能だとは思うのですが、「そのまんま」出力したい場合もたまにはあります。そういうメソッドはないのでしょうか。 PHPやPerlの場合は print でそのまま出力できるのでJavaScriptはどうなの?と思ってしまったわけです。 「無理」という回答でも結構です。よろしくお願いいたします。

  • このソースはJavaScriptですか?

    Webサイトの作成のためにJavascriptやJQueryについて勉強しようと思っており、いろんなサイトを調べてみたら、次のようなソースが書かれていることが多いです。 var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-746118-2']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); たぶんJavaScriptかJQueryだと思いますが、これは一体どのような命令文なのでしょうか? このソースを多くのサイトで使っているのならば、私も試してみたいと思っております。初心者ですが、宜しくお願い致します!!

  • Javascript onloadイベントについて

    AppleScriptの中にJavaScriptを書き、 location.hrefでページ移動し、onloadでページ読み込み後、指定タグを変数にいれて、 フォーム入力などの操作を行いたいのですが、 ページ移動後、フォーム入力をすることなく、そのまま処理を終了してしまいます。 いろいろと試行錯誤してみましたが、どうも解決しないのでご教授いただきたいです。 よろしくお願いいたします。 tell application "Google Chrome" tell window 1 open location "http://www.google.co.jp/" repeat while loading of active tab delay 0.1 end repeat tell active tab execute javascript " function idou(url) { location.href = url } function nyuryoku(){ var inp = document.getElementsByTagName('input') inp[0].value = 123 } idou('http://www.goo.ne.jp/') window.onload = nyuryoku() " end tell end tell end tell

  • location.hrefのURLについて

    以下のリンクの場合、現在表示しているアドレス(URL)が送られますが、 <a onclick="window.open('http://exsample.com='+encodeURIComponent(document.title)+' '+encodeURI(location.href));" href="javascript:void(0);"> これを指定したURLに変更したいのですが、その記述方法がわかりません。 ご教授よろしくお願いします。

  • このJavaScriptソースを解説して下さい

    JavaScript勉強中です。とあるサイトのソースの一部なのですが 何が書いてあるのかわかりません。 どなたか解説してください。 ----------ソースここから---------- <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-23877599-2']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> ----------ソースここまで---------- 全体的にわからないのですが、1行目だけでも教えてください。 var宣言で、論理和?(||)が使われてて、さらに配列?らしき括弧が続いてます。 これはなんという構文なのですか?

  • JavaScript初心者です

    今、あるページに自動でログインした後で、特定のページまで移動する、という仕掛けを 作っています。ソースはこんなんです。 ------ここから----- main(); function main() { var ie = WScript.CreateObject("InternetExplorer.Application"); ie.visible = true; ie.navigate("URL"); while( (ie.Busy) || (ie.readystate != 4) ) { WScript.Sleep(100); } // ユーザID ie.document.getElementById("email").value = "メールアドレス"; // パスワード ie.document.getElementsByName("password").item(0).value = "パスワード"; ie.document.getElementsByName("menu_btn").value = "ログインページ"; ie.document.getElementsByTagName("form").item(0).submit(); while( (ie.Busy) || (ie.readystate != 4) ) { WScript.Sleep(100); } } var location; location.href = "移動先"; -----ここまで----- ログインは無事にできるのですが、そこのリンクを踏んで特定のページまで行くように location.hrefで指定してるのに飛ぶことができません。何がおかしいのでしょうか?

専門家に質問してみよう