【问题标题】:iFrame in a Safari Extension "Popover"Safari 扩展“Popover”中的 iFrame
【发布时间】:2012-06-05 22:06:09
【问题描述】:

我有一个 Chrome 和 Firefox 扩展程序,我正在为 Safari 制作相同的扩展程序。

这些插件都有一个弹出窗口。换句话说,您单击一个图标并打开一个页面。我的 Chrome 扩展弹出窗口会在带有 iFrame 的插件文件夹中打开一个 HTML 页面。 FF 扩展直接链接到服务器上用于弹出窗口的 PHP 页面。

我需要用 Safari 做我用 Chrome 做的事情。我需要制作一个本地 HTML 页面,该页面在服务器上的页面上有一个 iFrame。这适用于 chrome,但 Safari 中的 iFrame 只是空白。

感谢您的帮助...

【问题讨论】:

  • 我认为 Apple 会阻止弹出框加载扩展程序以外的任何内容,这可能是为了使扩展程序更安全的错误尝试。无论如何,在尝试在弹出窗口中加载网页时,我没有比你更幸运的了。
  • 7 年前的帖子...那么我现在可以在新的 safari 应用扩展弹出窗口中使用 iframe 了吗?

标签: html safari google-chrome-extension safari-extension


【解决方案1】:

Apple 不允许在弹出框内加载 iFrame...但是! 您可以对任何域执行 XMLhttpRequest(现在说什么?)。是的 XMLhttpRequest 到任何域。 示例:

我将它用于我的选择器(因为我不想在扩展中加载 jQuery 或 Mootools):

function $(element) {
    return document.getElementById(element);
}

然后像这样做一个 XMLhttpRequest:

http = new XMLHttpRequest();
http.open('get', 'http://yoursitehere.com/extension/');
http.onreadystatechange = function () {
    $('target-div-id').innerHTML = http.responseText;
}

通过这种方式,您可以使用 HTML 填充目标 div。

【讨论】:

  • 谢谢!!!我在想这样的事情。无论如何,我的服务器上有 CORS(跨源请求)。但我不知道 Safari 允许向任何域发出请求。 :O
  • 还有一件事...如何在不使用 iFrame 的情况下将数据发送回页面?
  • 您只能请求数据。因此,如果您想向弹出框添加内容,您应该执行 GET/POST 请求并将响应放在弹出框内容中的某个位置。但是,如果您想将数据发送到您的域/页面,您应该对请求执行一些操作并且不返回任何响应..
猜你喜欢
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 2016-12-28
相关资源
最近更新 更多