我有一个从JavaScript PDF库(jsPDF)生成的数据URI似乎没问题,因为当我用console.log显示它并将其粘贴到浏览器URL字段时,它可以工作。但是,我无法在Chrome应用程序窗口或普通浏览器窗口中显示Chrome应用程序。 URI的开头如下:
var uri = "data:application/pdf;base64,JVBERi0xLjMK ...";
当我这样做时:
chrome.app.window.create(uri);
窗口打开,但它正在尝试加载URI:
chrome-extension:// gapkhdeaendagkjpchhemfhbpfcjgmep / data:application / pdf; base64,JVBERi0xLjMK ......
并在窗口中显示消息“找不到此网页”。
当我这样做时:
window.open(uri);
或
window.open(chrome.runtime.getURL(uri));
绝对没有任何反应。不会打开浏览器窗口或选项卡,也不会向控制台写入任何消息。
有没有人这样做过?
答案 0 :(得分:2)
chrome.app.window.create
只会从打包的应用加载资源,因此您无法转义那里的chrome-extension://gapkhdea.../
地址空间。
window.open
将使用默认系统处理程序打开URL。我不知道任何具有为数据方案注册的默认处理程序的常见系统配置,这可能就是没有任何反应的原因。
如果您的目标是在打包的应用中显示任意不受信任的内容,那么您想要的是webview tag。您可以将Webview元素直接嵌入到应用程序窗口的内容中。您可以为data
属性使用src
URI,该属性可以动态分配。
根据您的Chrome版本,当Webview尝试加载PDF查看器插件时,您可能会遇到权限问题,但我只是使用一些PDF数据对其进行了测试,并在打包的应用内部显示了精美的PDF渲染。