在普通HTML中读取时重写基标记

在普通HTML中读取时重写基标记,html,ruby-on-rails,jquery-mobile,relative-path,base-tag,Html,Ruby On Rails,Jquery Mobile,Relative Path,Base Tag,我目前正在一个带有Rails后端的jQM站点上工作。我们使用的两个页面是从AWSS3读取用户上传的HTML,并使用rails方法“HTML_safe”呈现HTML。这非常有效,但是如果html有任何对具有相对路径名的文件的引用,它们当然不会出现,因为它们需要从S3中获取 因此,我希望做的是更改基本标记,以便这些相对路径名可以获取它们的资产。我已经阅读了Navmodel上的jQM文档,但我不太熟悉javascript,也不确定是否可以使用*BaseURL方法来实现我的目标 有人有可能的解决办法吗?

我目前正在一个带有Rails后端的jQM站点上工作。我们使用的两个页面是从AWSS3读取用户上传的HTML,并使用rails方法“HTML_safe”呈现HTML。这非常有效,但是如果html有任何对具有相对路径名的文件的引用,它们当然不会出现,因为它们需要从S3中获取

因此,我希望做的是更改基本标记,以便这些相对路径名可以获取它们的资产。我已经阅读了Navmodel上的jQM文档,但我不太熟悉javascript,也不确定是否可以使用*BaseURL方法来实现我的目标

有人有可能的解决办法吗?任何建议都将不胜感激。谢谢

标签可以工作,但根据规范,它适用于整个页面,这会破坏页面上的任何其他相对URL

如果您不想确保所有其他URL都是绝对的,那么下一个最好的方法可能是使用Nokogiri来转换这些URL。例如

require 'uri'
require 'nokogiri'

base_uri = URI 'http://example.com/'

html = %{ <!DOCTYPE html>
          <html><body>
          <ul>
            <li><a href="/some_relative_url.html">Relative</a></li>
            <li><a href="http://stackoverflow.com/">Absolute</a></li>
            <li><img src="/a_relative_image.png" /></li>
          </ul>
          </body></html>
        }

doc = Nokogiri::HTML html

attrs = %w( @href @src )

doc.search( *attrs ).each do |attr|
  path = URI attr

  attr.value = ( base_uri + path ).to_s unless path.absolute?
end

puts doc
# => <!DOCTYPE html>
#    <html><body>
#    <ul>
#      <li><a href="http://example.com/some_relative_url.html">Relative</a></li>
#      <li><a href="http://stackoverflow.com/">Absolute</a></li>
#      <li><img src="http://example.com/a_relative_image.png" /></li>
#    </ul>
#    </body></html>
require'uri'
需要“nokogiri”
base_uri=uri'http://example.com/'
html=%{
} doc=Nokogiri::HTML 属性=%w(@href@src) 文件搜索(*属性)。每个文件都有属性| path=uriattr attr.value=(基本uri+路径)。除非path.absolute,否则是否指向? 结束 放博士 # => # #
    #
  • #
  • #
  • #
#
标签可以工作,但根据规范,它适用于整个页面,这会破坏页面上的任何其他相对URL

如果您不想确保所有其他URL都是绝对的,那么下一个最好的方法可能是使用Nokogiri来转换这些URL。例如

require 'uri'
require 'nokogiri'

base_uri = URI 'http://example.com/'

html = %{ <!DOCTYPE html>
          <html><body>
          <ul>
            <li><a href="/some_relative_url.html">Relative</a></li>
            <li><a href="http://stackoverflow.com/">Absolute</a></li>
            <li><img src="/a_relative_image.png" /></li>
          </ul>
          </body></html>
        }

doc = Nokogiri::HTML html

attrs = %w( @href @src )

doc.search( *attrs ).each do |attr|
  path = URI attr

  attr.value = ( base_uri + path ).to_s unless path.absolute?
end

puts doc
# => <!DOCTYPE html>
#    <html><body>
#    <ul>
#      <li><a href="http://example.com/some_relative_url.html">Relative</a></li>
#      <li><a href="http://stackoverflow.com/">Absolute</a></li>
#      <li><img src="http://example.com/a_relative_image.png" /></li>
#    </ul>
#    </body></html>
require'uri'
需要“nokogiri”
base_uri=uri'http://example.com/'
html=%{
} doc=Nokogiri::HTML 属性=%w(@href@src) 文件搜索(*属性)。每个文件都有属性| path=uriattr attr.value=(基本uri+路径)。除非path.absolute,否则是否指向? 结束 放博士 # => # #
    #
  • #
  • #
  • #
#
漂亮。我一定会试试的。谢谢,真漂亮。我一定会试试的。谢谢