在普通HTML中读取时重写基标记
我目前正在一个带有Rails后端的jQM站点上工作。我们使用的两个页面是从AWSS3读取用户上传的HTML,并使用rails方法“HTML_safe”呈现HTML。这非常有效,但是如果html有任何对具有相对路径名的文件的引用,它们当然不会出现,因为它们需要从S3中获取 因此,我希望做的是更改基本标记,以便这些相对路径名可以获取它们的资产。我已经阅读了Navmodel上的jQM文档,但我不太熟悉javascript,也不确定是否可以使用*BaseURL方法来实现我的目标 有人有可能的解决办法吗?任何建议都将不胜感激。谢谢 标签可以工作,但根据规范,它适用于整个页面,这会破坏页面上的任何其他相对URL 如果您不想确保所有其他URL都是绝对的,那么下一个最好的方法可能是使用Nokogiri来转换这些URL。例如在普通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方法来实现我的目标 有人有可能的解决办法吗?
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,否则是否指向?
结束
放博士
# =>
#
#
#
#
#
#
#
漂亮。我一定会试试的。谢谢,真漂亮。我一定会试试的。谢谢