我有一个带有两个参数的URL并返回一个PDF文件。我也可以将带有两个输入值的表单发布到此URL。
在另一个页面上,我想触发一个javascript,它将通过GET或POST向URL发送不同的参数组合,并返回与参数组合相关的每个文件。
基于我在这里找到的另一个脚本,我对其进行了调整并尝试了这个(URL匿名化):
var first = '503113571';
var second = '2046486463';
var url = 'https://www.domain.com/page';
el = document.createElement( 'div' );
el.setAttribute( "id", "targetdiv" );
document.body.appendChild( el );
function download(first, second)
{
var htm = '<iframe src="' + url + '?a=' + first + '&b=' + second + '"></iframe>';
document.getElementById('targetdiv').innerHTML = htm;
}
download(first, second);
iframe是在div中创建的,其src属性是正确的 - 如果我将src属性复制并粘贴到一个新窗口,该文件下载正常。出于某种原因,当在iframe中使用此URL时,永远不会加载该文件。
我正在使用GreaseMonkey在页面上运行脚本,因为我们无权更改实际的网页本身。脚本运行正常(所有代码都运行,正确创建iframe)。
使用FireBug的.NET面板,页面加载后,我没有看到对iframe src的任何请求。
任何想法,无论是在原因上,还是我可以采取哪些步骤来弄明白?谢谢!
答案 0 :(得分:1)
一些事情:
您应该只需设置 window.location 即可下载文件。
var first = '503113571';
var second = '2046486463';
var url = 'https://www.domain.com/page';
function download(a, b) {
window.location = url + '?a=' + a + '&b=' + b;
}
download(first, second);
如果你想使用 iframe ,这应该没有转到其他页面的风险:
function download(a, b) {
var newIFrame = document.createElement("iframe");
newIFrame.src = url + '?a=' + a + '&b=' + b;
newIFrame.style.display = 'none';
document.body.appendChild(newIFrame);
}