<select></select>
2 つのボックス間で可能なすべてのリンクのリストをコンパイルしようとしています。これには、新しいウィンドウで開くリンクと、現在のページに発生するリダイレクトの両方が含まれます。実際のサイトにはさらに多くのオプションがあり、ほぼ2000の可能性があるため、手動で行うことは問題外です...
この出力に近いところは、私が探しているものであり、フォーマットではなく、データだけです:
製品 1 + AL:
- 新しいウィンドウ: /product1.asp
- リダイレクト: なし
product1 + AK:
- 新しいウィンドウ: http://affiliate.com/product1.asp
- リダイレクト: /results.asp?st=AK&pr=product1
商品1 + AR:
- 新しいウィンドウ: http://affiliate.com/product1.asp
- リダイレクト: /results.asp?st=AR&pr=product1
製品 2 + AL:
- ...
product2 + AK:
- ...
等。
私は cURL を使用していたでしょうが、フォームは実際にはどこにも送信されず、JS を使用して新しいウィンドウを開いたり、現在のページをリダイレクトしたりするだけです。
ここに私が取り組もうとしているものの小さなサンプルがあります:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function submit()
{
if (product == "product1"){
if (state == "AL"){
openWindow('/product1.asp');
}
else{
openWindow('http://affiliate.com/product1.asp');
return(window.location="/results.asp?st=" + state + "&pr=product1");
}
}
if (product == "product2"){
openWindow('/product2.asp');
}
if (product == "product3"){
if (state == "AR") {
openWindow('http://affiliate.com/product3.asp');
}
else{
openWindow('/product3');
return (window.location = "/results.asp?st=" + state + "&pr=product3");
}
}
return(true);
}
function openWindow(url)
{
window.open(url, '', 'type=fullwindow,fullscreen,scrollbars=yes,toolbar=1,menubar=1');
}
</script>
</HEAD>
<BODY>
<form onsubmit="" action="javascript:submit()" method="post" id="form1" name="form1">
<select name="state" tabindex="1">
<option value="">Select</option>
<option value="AK">Alaska</option>
<option value="AL">Alabama</option>
<option value="AR">Arkansas</option>
</select>
<select name="productType" tabindex="2">
<option value="">Select</option>
<option value="product1">Product One</option>
<option value="product2">Product Two</option>
<option value="product3">Product Three</option>
</select>
</form>
</BODY>
</HTML>
Chrome のコンソール ウィンドウで JavaScript を使用できると考えましたが、Chrome にリダイレクトや別のウィンドウの表示を停止させることはできません。
ページ上のすべての HTML を選択し、文字列置換 (JS を使用) を実行して変数名に置換しwindow.location
、HTML をドキュメントに書き直してから、呼び出すと、動作します。 URL を取得できますが、Chrome は引き続き元の JS リダイレクトを使用するため、データにアクセスしたり表示したりできません。新しいウィンドウを開いて、ページ全体の HTML をそこに置き換えて書いてみましたが、何も...window.location = "/results.asp"
redirectLink = "/results.asp"
submit()
これは、置き換える必要がある JS コードです。
var script = document.getElementsByTagName('script')[0];
var html = scripts[i].innerHTML;
html = html.replace(/window.location/gmi, "redirectLink"); // the "/string/gmi" is to replace globally, on multi-lines, and ignores case
script.innerHTML = html;
ChromeのInspect Elementツールでは、置換が行われたこととすべてが表示されますが、それを呼び出すsubmit()
と、ウィンドウがリダイレクトされたり開いたりします...選択した値とその他すべてのものを変更するためのループ設定があり、すべて機能しますが、元のJSリダイレクト/新しいウィンドウのがらくたを使用するのを止めることはできません...
私は文字通りこれを 5 時間連続で機能させようとしてきましたが、この時点で髪をすべて抜くとハゲになります!
ブラウザで JavaScript を変更し、変更して実行することさえ可能ですか? これについてもっと良い方法はありますか?私はアイデアを完全に失っています...