我正在尝试编译两个<select></select>
框之间可能存在的所有链接的列表。这包括在新窗口中打开的链接和发生在当前页面的重定向。实际站点上还有更多选项,几乎有 2000 种可能性,所以手动操作是不可能的......
我正在寻找接近此输出的任何地方,而不是格式,只是数据:
产品1 + AL:
- 新窗口:/product1.asp
- 重定向:无
产品1 + 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:
- ...
产品2 + 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,然后通过修改运行它?有没有更好的方法来解决这个问题?我完全失去了想法......