3

什么? 我希望能够在不使用目标属性(XHTML 验证)的情况下向新窗口发出发布请求(不必是表单数据)。

为什么? 我有一个 webapp(使用 jQuery),用户可以在其中选择要打印的多个条目。每个条目 id 都应该发送到一个处理页面,该页面将显示整个条目的可打印版本。我不想引导用户离开 web 应用程序进行打印,并且我不能在弹出窗口中使用 get,因为条目 ID 的数量可能会变得太大而无法容纳在 URL 中。

我搜索并阅读了几个论坛,大多数人似乎建议直接使用目标属性或使用 JavaScript 插入它。我希望避免这两种解决方案。

这甚至可能吗?如果可以,怎么做?

提前致谢 :)

4

6 回答 6

3

这就是target属性的用途。将其设置为“_blank”以打开一个新窗口。如果您希望您的标记有效(有什么意义?我向您保证,您的用户可能不太关心您的标记的有效性!),然后使用 Javascript 设置页面加载目标...

window.onload = function() {
  document.forms[0].target = '_blank';
}

没有其他办法。

于 2010-02-12T16:10:45.917 回答
1

在 Javascript 中,拦截表单提交,仅使用您想要的值填充隐藏字段的第二个表单,然后提交该表单。

于 2010-02-12T17:08:19.293 回答
0

要定位当前页面的顶部并突破当前使用的任何框架集,您将<a href="page.htm" target="_top">在 HTML 中使用。在 Javascript 中,您使用:

top.location.href = 'page.htm';

要定位当前页面或框架,您可以<a href="page.htm" target="_self">在 HTML 中使用。在 Javascript 中,您使用:

self.location.href = 'page.htm';

要定位父框架,您可以<a href="page.htm" target="_parent">在 HTML 中使用。在 Javascript 中,您使用:

parent.location.href = 'page.htm';

要定位框架集中的特定框架,您可以<a href="page.htm" target="thatframe">在 HTML 中使用。在 Javascript 中,您使用:

top.frames['thatframe'].location.href = 'page.htm';

要定位当前页面中的特定 iframe,您可以<a href="page.htm" target="thatframe">在 HTML 中使用。在 Javascript 中,您使用:

self.frames['thatframe'].location.href = 'page.htm'; 
于 2010-02-12T15:34:28.123 回答
0

您可以使用 Javascript window.open 来“弹出”新窗口并在 URL 中使用 GET 参数来传递参数......但 IMO 它比在过渡文档类型中使用 target 属性更糟糕。

最好的方法是在 DOM 中动态创建一个“假”新窗口,并通过 AJAX 调用填充自身。这样您就不会“破坏”用户体验(通过打开一个新窗口)。

于 2010-02-12T16:14:37.873 回答
0

如果您在从调用页面打开新窗口之前在打开新窗口的页面中设置了一些隐藏字段(称为 entryIds),则可以在打开的页面中引用它,如下所示:

$(function() {
    var $opener = $(window.opener.document);
    var entryIds = $opener.find("#entryIds").val();
    // do something with the ids
});  

这里的缺点是您现在也只能通过 javascript 显示您的条目详细信息。根本不需要做表格帖子。

如果你感觉很活泼,你可以在打开新窗口之前在打开页面上的会话或 cookie 中设置条目 ID(通过 Web 服务调用),然后在打开的页面上抓取会话,这样你就可以建立而是在服务器端打印页面。

于 2010-02-12T17:33:58.520 回答
0

元素的属性target<form>XHTML 1.0过渡..

如果您使用的是 XHTML 1.1 或 1.0 Strict,那么首先这<iframe>不是一个有效的标签。

于 2010-02-12T16:07:12.990 回答