【问题标题】:load external site and change its visualization加载外部站点并更改其可视化
【发布时间】:2012-12-08 15:18:58
【问题描述】:

我正在尝试创建一个能够更改站点可视化(.css 或 / 和 .js)的网页,以便重新创建 Firebug for Firefox 或 Inspector of Chrome 提供的相同实时更改功能。

这里有一张图片可以更好地解释我的任务:

我已经能够使用 iframe 可视化我页面内的其他网站,但不幸的是,由于"same origin policy",无法更改其可视化并访问其元素。

有没有办法使用 iframe 或在另一个元素中加载外部网站?


更新:

考虑到答案,选项应该是:

  • 创建一个 php 代理页面以加载目标站点并在其上更改可视化。
  • 创建浏览器扩展。

我尝试了第一个,即使它需要安装一个 web 服务器 (xampp),一个简单的页面调用函数 file_get_contents('http://www.site.com')
页面已加载但不幸错过了一些元素(如图像),它只是一个静态副本;
无法在网站导航中走得更远。


更新 2:

如果可以实时更改代码,那么通过 javascript 加载整个页面可能是更好的解决方案(我不知道如何),但是与此“页面副本”交互并将交互转移到原版?

方案:


说明:

我注意到 Firebug 扩展可以选择和实时编辑任何页面元素,即使它们属于加载外部域页面的 iframe。
我正在寻找的是一种像 Firebug 一样的方式,获取一个元素并更改其样式。
我正在尝试将网站加载到 iframe 中,因为我想在其上方创建一个工具栏来选择我的“可视化样式”;例如一个使标题变大变红的按钮。
无论如何,我对任何其他方法建议持开放态度。


更新 3:

我找到了一个非常接近我的目标的 FireFox 和 Chrome 扩展:"Stylish"
此插件允许实时更改任何网站 CSS 属性并将其保存,以便在您每次访问该页面时重新加载它们。

现在我的问题是:如何创建一个专用页面来加载和更改特定网站的可视化?


最终编辑:

为了以更相关的论点继续这个问题,我决定提出一个新的论点:
create a php proxy page

【问题讨论】:

    标签: javascript jquery html css ajax


    【解决方案1】:

    没有。您的解决方案可能是

    • 让您自己的网站充当代理,以免触发同源策略
    • 构建一个依赖于浏览器(Firefox 或 Chrome)并且需要授权和安装的扩展

    【讨论】:

      【解决方案2】:

      我不确定我是否非常了解您想要什么,但我觉得“欺骗”这更容易可能会为您的第一个站点(iframe)提供非常具体的高度和宽度并执行 jQuery 条件

          If ($('body').width() == 500 && $('body').height() == 400 {
            $('body').addClass('isiFrame');
          }
      

      然后,你只需要做你的 css .isiFrame .myCoolDivs {....} 您可能还必须在准备好的文档上使用它,但这可能是一种欺骗它的方法,因为您没有在调整大小时这样做(例如,如果有人在开始时的屏幕宽度和高度正好是这样的)

      更安全的方法可能是使用 PHP 创建主会话,但我不能给你一个例子,因为如果 master_session 或变量等于 true,它已经很长并回显 body 类

      希望对您有所帮助!

      【讨论】:

        【解决方案3】:

        如果您尝试与 Same_origin_policy 抗争并尝试与之抗争,我相信您不会获得太大的成功。

        服务器端

        我建议你在服务器端处理这个,抓取网页并应用你想要的任何样式和脚本,应该很容易!!

        如果您使用 Ruby on rails - Nokogiri gem 可以帮助您解析 html。您可以使用标准库来“获取”网页。

        客户端

        如果你想在客户端这样做,你需要编写一些jquery/javascript代码,你可以采取以下步骤:

        1. 获取要显示的网页。
        2. 抓取包含 js/css 文件的元素,删除它们和您自己的。
        3. 在页面中存在的新 iframe 中显示页面。

        【讨论】:

        • 在客户端做这件事会很完美。我不想修改原始站点(实际上是一个 Web 应用程序)或其功能,而只是修改某些用户可以看到它的方式(颜色和文本大小)。按照您的三个步骤,我的问题是抓取页面并访问其元素。如果有可能获得 iframe 内部元素...
        • 应该可以使用 javascript 动态创建 iframe 元素,并在其中呈现您的 html 页面。
        • 我想这应该是可能的,因为 Firebug Lite 允许动态修改任何 css;但如果站点由于“同源策略”而被加载到 iframe 中,则不会。应该还有别的办法,我在找……
        猜你喜欢
        • 1970-01-01
        • 2013-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-16
        • 2016-06-22
        相关资源
        最近更新 更多