したがって、純粋な HTML では、(ユーザーを結果 URL に移動する代わりに) 結果を iframe にロードするフォームを作成できます。
<html>
<head>
<title>Google Preview</title>
<style>iframe { width: 800px; height: 600px }</style>
</head>
<body>
<form method='get' action='http://www.google.com/search' target='results'>
<label for='q'>Google Search:</label>
<input name='q'/>
</form>
<!-- form result loads in this iframe -->
<iframe name='results'></iframe>
</body>
</html>
私は Greasemonkey で同様のことをしようとしていますが、問題が発生しています。
結果をiframeにロードしたいフォームを含むページがあるので、iframeを作成し、target
iframeの名前に一致するようにフォームを変更します。ただし、これは結果ページを iframe にロードせず、結果ページを新しいタブで開きます。
Javascript を使用して iframe を作成するまで問題を突き止めました。iframe を DOM に問題なく挿入しているようです (また、firebug を見ると、生成されたソースは、追加の<script>
タグを除いて上記とほぼ同じです)。しかし、Javascript で iframe を作成すると、「新しいタブで結果を開く」動作が発生します。
<html>
<head>
<title>Google Preview</title>
<style>iframe { width: 800px; height: 600px }</style>
</head>
<body>
<form method='get' action='http://www.google.com/search' target='results'>
<label for='q'>Google Search:</label>
<input name='q'/>
</form>
<script>
try {
// form result doesn't load in this iframe, for some reason
const iframe = document.body.appendChild( document.createElement('iframe') );
iframe.name = 'results';
} catch (e) {
alert(e);
}
</script>
</body>
</html>
Javascript で作成された iframe に結果を読み込むにはどうすればよいですか? (私はまだ試しdocument.write()
ていませんが、Greasemonkey から非常に役立つかどうかはわかりません)。
更新:だから私は試してみましたがdocument.write()
、うまくいきました。したがって、GreaseMonkey からそれを使用する方法を理解する必要があるかもしれません (ハンドルを持っている多数の DOM 要素を台無しにすることはありません)。
<html>
<head>
<title>Google Preview</title>
<style>iframe { width: 800px; height: 600px }</style>
</head>
<body>
<form method='get' action='http://www.google.com/search' target='results'>
<label for='q'>Google Search:</label>
<input name='q'/>
</form>
<script>
try {
// but form result will load in this iframe
document.write('<iframe name="results"></iframe>');
} catch (e) {
alert(e);
}
</script>
</body>
</html>
document.body.appendChild()
なぜうまくいかないのか知りたいのですが、うまくいきdocument.write()
ます。
更新2 : 単なるフォームではないようです。代わりにリンクを代入して、<form>...</form>
3 つのケースすべてで同じ結果を得ることができます
<div><a target="results" href="http://www.google.com">test</a></div>