2

我想调用一个浏览器函数,例如AddSearchProvider(engineURL),它需要一个指向 XML 文件的 URL。但是,我希望用户自己生成 XML 文件的内容,因此我想通过直接传递(引用)用户生成的内容来调用该函数。关键是所有这些都只发生在客户端,这样就不需要服务器在该过程中临时托管文件。

我尝试将 XML 文件编码为 URI:

uri = "data:application/xml;charset=utf-8," + encodeURIComponent($('#edit-search-engine').val());
window.external.AddSearchProvider(uri);

但是 Firefox (57.0) 拒绝这种方法,并显示以下消息:

我猜¹ Firefox 需要一个“真实”的远程 URL。如果没有服务器在循环中,如何实现上述功能?

¹更新:Firefox 确实将 URL 强制为 HTTP、HTTPS 或 FTP:

  [...]
  // Make sure the URLs are HTTP, HTTPS, or FTP.
  let isWeb = ["https", "http", "ftp"];

  if (isWeb.indexOf(engineURL.scheme) < 0)
    throw "Unsupported search engine URL: " + engineURL;

  if (iconURL && isWeb.indexOf(iconURL.scheme) < 0)
    throw "Unsupported search icon URL: " + iconURL;
  [...]
4

0 回答 0