【问题标题】:Is there a way to change or reskin an incoming website on the fly?有没有办法即时更改或重新设置传入的网站?
【发布时间】:2010-07-11 10:15:40
【问题描述】:

我有一个项目,他们希望我将网站嵌入到 Java 应用程序中,并且他们希望网站具有与应用程序其余部分相似的配色方案。我对 CSS 和构建网站有很多了解,但我不知道有什么方法可以在网站动态出现时改变它的外观。有人可以帮忙吗?

更新:

我无权访问标题,因为它不是我的网站。为了提供有关该项目的更多信息,我们在 Java 客户端应用程序中嵌入了一个浏览器。用户需要访问显示数据库内容的网站。我无法从该站点访问原始 html 或 css。

我需要更改传入网页的背景颜色和字体大小以匹配 java 应用程序的外观。

【问题讨论】:

  • 你能提供更多细节吗?您说它是嵌入式的,但必须“在它即时进入时”对其进行更改。你能举个用例吗?
  • 好吧,如果网站是关于猫的,有几种方法。
  • “我无权访问标题,因为它不是我的网站。”这种说法是不正确的。我可以访问任何公开网站的标题。我所要做的就是查看源代码。问题是,嵌入式浏览器暴露了哪些可能有用的东西?

标签: java html css


【解决方案1】:

一种方法是用您自己的 CSS 替换他们的 CSS。

您也可以采用Stylish plugin 使用的方法,这涉及很多!重要的减速来覆盖网站的CSS。由于这是一个 Java 应用程序,我假设用户没有机会提供自己的 CSS,因此在此处使用 !important 并不完全违反标准。

【讨论】:

    【解决方案2】:

    在您的特定情况下,我会研究数据抓取,您需要做的就是从网站上抓取数据,然后重新设置样式以呈现您想要的样子。

    祝你好运

    【讨论】:

      【解决方案3】:

      Firefox 的Greasemonkey 插件就是这样做的。您可以编写一些 Javascript 代码并在某些网页加载时运行它。使用它的一个常见事情是更改 DOM 以移动页面元素、隐藏或调整元素大小、更改颜色等。如果您想了解我的内容,userscripts.org 有很多示例正在谈论。

      您的代码只需要执行类似的操作。加载页面(包括普通样式表),然后根据需要使用 DOM 对样式元素进行更改。浏览页面的源代码以获取重要元素的名称/ID,您的代码可以关闭这些元素。加载包含更改的附加 CSS 文件是一种选择,但以编程方式执行此操作可能会在目标网站发生更改时为您提供更大的灵活性。

      【讨论】:

        【解决方案4】:

        取决于您使用什么来显示 Java 中的页面。大多数浏览器实现都支持对 DOM 进行动态更改,因此您只需将 CSS 文件作为最后一个元素添加到 header,它就会被应用。

        【讨论】:

          【解决方案5】:

          你需要知道html/css的标记,这样你才能做出最好的皮肤。

          理论上,您可以通过设置基本标签的样式来做到这一点:h1...h6、p 等...但它不会那么好,并且有时可能无法产生最好的结果,甚至会产生可怕的东西有时。

          如果您知道网站标记,那么您可以制作皮肤并简单地使用 CSS/图像来根据需要设置皮肤。

          只需在最后包含您的 CSS 标记,以便它覆盖您想要以不同方式显示的网站上已经存在的标记。

          本身不应该是一件困难的事情。皮肤本身可能是工作中更好(需要更多努力)的部分。

          【讨论】:

            【解决方案6】:

            在运行中,应该意味着更改获取的 html。所以解析和替换标记似乎是一种方式。

            您可以通过替换指向 css 文件的链接中的 href 值来更改样式表文件的位置,并将该值设置为您的样式表(不同的 URI)。

            <link type="text/css" href="mylocalURI" rel="stylesheet /> 
            (this should be the result of a process/replacement)
            

            我想你明白内联样式应该发生什么。

            【讨论】:

              【解决方案7】:

              我会使用 JTidy 将原始站点 HTML 规范化为 XHTML,然后使用 XSLT 仅过滤有趣/相关信息,获得 XML 格式;最后(因为我不想将 XML 转换为对象),XSLT 再次将“纯”XML 转换为我需要/想要的 HTML 外观。

              所有这些都可以组装成流,每个过滤器每个线程使用或多或少 4 Kb 的缓冲区(总共 12 Kb)。也意味着它将运行得足够快。并且全部建立在标准的、开源的可用组件之上。

              干杯。

              【讨论】:

                猜你喜欢
                • 2019-08-18
                • 2020-07-09
                • 1970-01-01
                • 2015-06-26
                • 1970-01-01
                • 2020-03-09
                • 1970-01-01
                • 2012-07-29
                • 1970-01-01
                相关资源
                最近更新 更多