如何使用 JavaScript / XUL 向新的浏览器选项卡发出发布请求?
我正在尝试打开一个新的浏览器选项卡,其中包含 POST 请求的结果。 我尝试使用包含以下代码的函数来执行此操作:
var windowManager = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interface
s.nsIWindowMediator);
var browserWindow = windowManager.getMostRecentWindow("navigator:browser");
var browser = browserWindow.getBrowser();
if(browser.mCurrentBrowser.currentURI.spec == "about:blank")
browserWindow.loadURI(url, null, postData, false);
else
browser.loadOneTab(url, null, null, postData, false, false);
我使用字符串作为 url,使用 JSON 数据作为 postData。 我做错了什么吗?
发生的情况是创建了一个新选项卡,该位置显示了我想要发布到的 URL,但文档是空白的。 浏览器上的后退、前进和重新加载按钮均呈灰色。 除了执行 POST 之外,它似乎做了所有事情。 如果我关闭 postData 参数,那么它会正确运行 GET。
版本标识符:Mozilla/5.0(Macintosh;U;Intel Mac OS X 10.5;en-US;rv:1.9.0.1)Gecko/2008070206 Firefox/3.0.1
I'm trying to open a new browser tab with the results of a POST request. I'm trying to do so using a function containing the following code:
var windowManager = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interface
s.nsIWindowMediator);
var browserWindow = windowManager.getMostRecentWindow("navigator:browser");
var browser = browserWindow.getBrowser();
if(browser.mCurrentBrowser.currentURI.spec == "about:blank")
browserWindow.loadURI(url, null, postData, false);
else
browser.loadOneTab(url, null, null, postData, false, false);
I'm using a string as url, and JSON data as postData. Is there something I'm doing wrong?
What happens, is a new tab is created, the location shows the URL I want to post to, but the document is blank. The Back, Forward, and Reload buttons are all grayed out on the browser. It seems like it did everything except executed the POST. If I leave the postData parameter off, then it properly runs a GET.
Build identifier: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一些不太 Mozilla 特有的东西,应该可以在大多数浏览器中正常工作:
Something which is less Mozilla specific and should work reasonably well with most of the browsers:
尝试使用 addTab 而不是 loadOneTab,并删除最后一个参数。
请查看 Mozilla 开发中心的此页面,了解有关如何打开选项卡的信息。
您可以使用此功能,例如:
try with addTab instead of loadOneTab, and remove the last parameter.
Check out this page over at the Mozilla Development Center for information on how to open tabs.
You could use this function, for example:
shog9 找到了这个问题的答案。 postData 参数需要是一个 nsIMIMEInputStream 对象,详细信息请参见 这里。
The answer to this was found by shog9. The postData parameter needs to be a
nsIMIMEInputStream
object as detailed in here.