JavaScriptを使用して新しいページを開き、そこにフォーム値を入力します
-
02-10-2019 - |
質問
私はブックマークレットでJavaScriptを使用して、ウェブサイトにフォーム要素を入力しています。
javascript:var f = document.forms[0];
f.getElementsByTagName('input')[0].value = 'myname';
f.getElementsByTagName('input')[1].value = 'mypassword';
f.getElementsByTagName('input')[2].click
これは機能します。ただし、私が作成したいのは、ターゲットページを開き、そこに値を入力するためのブックマークレットです。ただし、ページがロードされているように思われ、他のJavaScriptコードは実行されません。したがって、以下は機能しません。
javascript:window.location("mywebsite");var f = document.forms[0];
f.getElementsByTagName('input')[0].value = 'myname';
f.getElementsByTagName('input')[1].value = 'mypassword';
f.getElementsByTagName('input')[2].click;
また、コードの実行を遅らせるためにSettimeoutを試しましたが、それはうまくいきませんでした。
javascript:var f = document.forms[0];setTimeout("f.getElementsByTagName('input')[0].value = 'myname';f.getElementsByTagName('input')[1].value = 'mypassword';f.getElementsByTagName('input')[2].click;",1000);
ターゲットページが完全にロードされていることがわかったら、どうすればスクリプトをロードできますか?
解決
Greasemonkey クロムに組み込まれており、ホイールを再発明しようとしているように聞こえます。 JSファイルをインストールすると、ページが読み込まれると実行されます。
他のヒント
私はGreasemonkeyを個人的なルールとして使用していません。ブラウザを使用してはなりません。ブックマークレットは、システムがロックダウンされ、Greasemonkey、Roboformなどのインストールが許可されていないときにログインを自動化するための最小のデノミネーターアプローチです。
ログインブックマークレットをたくさんコーディングし、あなたがやろうとしていることについて考えました。ページの読み込み後に実行されるスクリプトを追加します。私はこのページにソリューションを探して来ましたが、今はうまくいかないことを嬉しく思います。
これのセキュリティへの影響について考えてください。キーストロークをロードされたページにエコーすることが可能であれば、キーストロークを聞いて他の場所に送信することもできます - 非常に悪いです。
ログインを自動化する場合は、このようなブックマークレットパターンを試してみてください(ラインブレークを削除):
javascript:
u='my_username';
p='my_password';
l='https://my_server/signon.aspx';
if(location!=l)location=l;
else{
g=document.getElementById;
ue=(g('username') || g('userid') || g('login_name'));
if(ue){
ue.value=u;
pe=(g('password') || g('pw') || g('pin'));
pe.value = p;
b=(g('submit_button') || g('signon_button') || g('login_button'));
document.close();
if(b)b.click();
}
}
リンクをクリックすると、signon.aspxページに移動します。ロードされたページでユーザー名フィールドが使用可能になったら、同じリンクをもう一度クリックするとフォームが入力されて送信されます。
したがって、それはあなたが望んでいたよりも1回クリックしますが、ツールバーにブックマークレットを置いた場合、それはほとんど遅延ではありません。幸運を!