プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

index.htmlに AAA.js という外部.jsを読み込ませてフォーム送信させようとしています。

AAA.jsには
document.write("<INPUT NAME=\"return_url\" TYPE=\"hidden\" VALUE=\"http://www.my-site.com/p-123.html\"><INPUT NAME=\"to_do\" TYPE=\"hidden\" VALUE=\"touroku\"><input type=\"submit\" name=\"comm1\"/>" value=\"書き込む\"");

というソースが入っており、

index.htmlには
<INPUT NAME="return_url" TYPE="hidden" VALUE="http://www.my-site.com/p-456.html">

というタグが含まれています。

この場合、1組の<form></form>内に、同じ「return_url」で、片や p-123.html、片や p-456.html と、矛盾する2つの指定をしてしまっていることになりますから、これではフォームが成り立ちません。

都合により、このindex.htmlの<form></form>内にはどうしても AAA.js を読み込ませなければならないのですが、「return_url」だけはp-456.html に書き直してフォームを送信しなければなりません。

AAA.jsは私が作ったものではなく、他ページでも読み込むので、AAA.js は<INPUT NAME=\"return_url\" TYPE=\"hidden\" VALUE=\"http://www.my-site.com/p-123.html\">という記述を外すことも他のソースを付け加えることも出来ないのですが、
index.html側に何か手を加えることで、この AAA.js で指定されているp-123.htmlをp-456.html に置き換えてフォームを送信するようにすることは出来ないでしょうか?

方法をご存知の方がいらっしゃいましたら、どうかよろしくお願い致します。

A 回答 (2件)

AAA.js を実行させた後に、フォーム内の入力要素の値を書き換える


では駄目でしょうか?

<script src=AAA.js></script>
<script>
var 対象要素 = 対象フォーム.elements['return_url'];
var 対象要素を上書き = function(e){ e.value = 'p-456.html' };
if (対象要素.item) {
Array.prototype.slice.apply(対象要素).forEach(対象要素を上書き);
} else {
対象要素を上書き(対象要素);
}
</script>
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
「対象要素を上書き」というのが、要するに私が「こんなことって出来ないのかな」と思っていた部分だったのですが、頂いたご回答のお陰でやっぱり出来るんだなと判りました。
具体的な書き方がわからなくて、改めて検索して色々なサイトを見てみるうちに、なんとなく出来そうな感じになってきました。
どうもありがとうございました。

お礼日時:2014/04/03 09:30

よくわかってませんが…



AAA.jsがご提示の通りdocument.writeで要素を追加しているのなら、その直後にスクリプトで
 var inps = document.getElementsByTagName("input");
 var inp = inps[inps.length-3];
とすることで、ご指定の要素を取得できます。

 要素ごと削除してしまうとか、desableにするとかいろいろ方法はあると思いますのでご自由に。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
すみません、私のレベルでは、教えて頂いた部分でどのように要素が抜き出されているのかちょっと理解しきれず、その後をどう処理したらいいかを考えることが出来ませんでした。
#1でOgre7077さんに教えて頂いたスタイルでいじってみようと思います。

お礼日時:2014/04/03 09:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!