下面的代码包含一个超链接,当用户点击链接时,该超链接会使来自服务器的弹簧生成的pdf加载到新的浏览器窗口中。问题是某些用户的浏览器中有弹出窗口被阻止。 当用户点击链接时,为了使pdf在相同的浏览器窗口中打开,需要对下面的代码进行哪些具体更改?请注意,此pdf由弹簧控制器生成。 / p>
这是html:
Parser
这是Angular控制器代码:
abstract class Parser {
public function parse()
{
$this->mapApiKeysToColumns();
}
protected function apiKeys()
{
// Gets First rows of CSV (columns)
return $this->reader->fetchOne(0);
}
protected function mapApiKeysToColumns()
{
foreach($this->apiKeys() as $api_key) {
array_push($this->keys, $this->key_mappings[$api_key]);
}
}
protected function createArrayFromData()
{
// Gets first chunk of data from csv
$this->reader->setOffset($this->offset)->setLimit($this->parse_chunk)->fetchAll(function($row, $offset) {
// takes the Keys and combines them with the data
array_push($this->data, array_combine($this->keys, $row));
});
}
}
答案 0 :(得分:2)
window.open
支持第二个参数windowName。您可以将其设置为"_self"
以在同一窗口中打开URL。
window.open(fileURL, "_self");
有关详细信息,请参阅here。
更好的方法可能是使指令在导航之前将链接href更新为正确的URL。这将允许您使用_blank作为目标并在新的选项卡/窗口中打开它。
答案 1 :(得分:1)
您需要向用户提供一个链接,点击其href为window.open
,而不是调用fileUrl
。您可以通过在用户单击链接之前生成PDF,或者在生成PDF之后为其提供单独的链接来执行此操作。