フィールドに何かを配置してフォームを送信するブックマークレットを作成するにはどうすればよいですか?
私はこれらの線に沿って考えます:
1)var p = document.open(http://site.com/form.htm)
2)var h = p.innerHTML
3)var f = h.getElementById('formfield')
現在のページのURLを「formfield」の値にする方法を教えてください。
フィールドに何かを配置してフォームを送信するブックマークレットを作成するにはどうすればよいですか?
私はこれらの線に沿って考えます:
1)var p = document.open(http://site.com/form.htm)
2)var h = p.innerHTML
3)var f = h.getElementById('formfield')
現在のページのURLを「formfield」の値にする方法を教えてください。
現在のページのURLをフォームフィールドに配置する場合は、次のように実行できます。
f.value = window.location;
var p = document.open(http://site.com/form.htm)
これはうまくいきません。window.open について考えているかもしれません。window.open を使用する場合、ブックマークレットが同じドメインから実行されている場合にのみ、目的に役立ちます。他のドメインから実行すると、ウィンドウが開きますが、その新しく開いたウィンドウでドキュメントを操作することはできません。
var h = p.innerHTML
これはあなたの場合には何の役にも立ちません。テキストの文字列を返すだけです。
var f = h.getElementById('formfield')
これは正しくない "h" を使用しているため、正しくありません。あなたがおそらく欲しいのはこれです...
var w = window.open('http://site.com/form.htm');
// need code that will check if window is done loading before you use next line!
w.document.getElementById('formfield').value = window.location;
フォームのあるページでブックマークレットを使用する場合は、これだけが必要です。
document.getElementById('formfield').value = window.location;
ウィンドウを別のドメインに開きたい場合は、フォームの値を入力してフォームを送信します。これは、ブックマークレットでは実行できません。ブックマークレットには、ページ内の他の JavaScript と同じ制限があります。これは、インターネット上の Web ページがあなたのブラウザーを乗っ取り、他のサイトであなたと同じことをしようとするのを防ぐためのセキュリティです。この場合の唯一の合理的な選択肢は、ブラウザのアドオン/拡張機能を作成/使用することです。
私の理解が正しければ、ブックマークレットを使用して、現在の URL とその他のデータをサーバーに送信する必要があります。
私はこのようにします:
クロスドメインの制限により、フォームの代わりに Ajax を使用してデータを送信することはできません。