あなたは HTML と HTTP にあまり慣れておらず、まだ学んでいるので、ページのソース コードを調べて何が起こっているのかを調べていないと思います。
それはまったく問題ありません。
以下は、そのページのソース コードの簡略版です。
<form id="tryitform" name="tryitform"
action="tryit_view.asp" method="post"
target="view"
onsubmit="validateForm();">
Source Code: <input type="button" value="Submit Code »"
onclick="submitTryit()">
Result: <textarea id="pre_code">
<!-- Your source code goes here -->
</textarea>
<input type="hidden" id="code" name="code" />
<input type="hidden" id="bt" name="bt" />
<iframe id="viewIFRAME" name="view"
src="tryit_view.asp?filename=tryjsref_loc_host">
</iframe>
</form>
<script type="text/javascript">
// This Script is called when you press the "Submit Code" button
function submitTryit()
{
// I'll omit the code, but what it does is this:
// 1. Take the text (your code) in the 'pre_code' textarea
// and substitute '=' with 'w3equalsign'
// and 'script' with 'w3scrw3ipttag'.
// 2. Put the modified text in the 'code' hidden input field
// 3. Change the form's action to "tryit_view.asp?x=" + a random number
// 4. Call validateForm(), which basically
// only checks if the code doesn't exceed 5000 characters
// 5. Submit form
}
window.onload = function(){ submitTryit() }
// Call submitTryit() when the page first loads
// so the view is filled also when you first arrive.
</script>
ここで理解しておくべき重要なアイデアは、action
属性が "tryit_view.asp?x=" + 乱数に設定され、target
属性が "view" に設定されているフォームにコードを記述することです。フォームのこのtarget
属性は、フォームの送信の結果がiframeに表示され、属性name
が「view」に設定されていることを意味します。
おわかりのように、問題は、ブラウザに表示されているページでコードが実際に実行されていないことです。実際には、POST でサーバーに送信されています。
サーバーは、iframe のコンテンツを埋める別のページで応答します。
iframe は基本的に、メイン ページ内にネストされて表示される「四角形のミニ ブラウザー」であり、メイン ページの URL とは関係なく、アドレス バーには表示されない別の URL があります。この URL は、フォームのアクションの URL です。
おそらく、サーバーが POST に応答して行うことは、上記の奇妙なテキスト置換を元に戻した後、送信したコードを使用して HTML ページを作成することです。
そのため、コードは iframe 内で実行されます。
そのため、window.location
または だけを記述location
すると、コードはメイン ページの場所ではなく、iframe の場所に実際にアクセスすることになります。
親ページの場所には次のようにアクセスできます。
// 'parent', same as 'window.parent', refers to
// the frame which is the parent of the frame where
// this code is being run (the iframe named 'view').
document.write( parent.location.search );
またはこのように:
// "top" is the frame at the top of the frame hierarchy
document.write( top.location.search );
あなたの学習に頑張ってください!