为啥 QWebkit 在 -webkit-scrollbar css 中使用时不解析 file:// 和 qrc://?

Posted

技术标签:

【中文标题】为啥 QWebkit 在 -webkit-scrollbar css 中使用时不解析 file:// 和 qrc://?【英文标题】:Why QWebkit doesn't resolve file:// and qrc:// when used in -webkit-scrollbar css?为什么 QWebkit 在 -webkit-scrollbar css 中使用时不解析 file:// 和 qrc://? 【发布时间】:2012-01-31 15:07:57 【问题描述】:

示例 #1:

::-webkit-scrollbar-button 
    background-image: url(file:///tmp/bg.png);

示例 #2:

::-webkit-scrollbar-button 
    background-image: url(qrc://bg.png);

以上示例仅在 QWebPage 显示本地 html 页面时有效。对于http://***.com,它不起作用。我已经使用 QWebSettings::setUserStyleSheetUrl() 设置了样式 - 这是一个用户样式表。

【问题讨论】:

【参考方案1】:

您必须使用命令行标志--allow-file-access-from-files 启动 Chrome(我假设这是您正在使用的浏览器),否则它不会动态加载本地文件(使用 file:// 协议),因为这可能会带来很大的安全风险。

您可以查看http://code.google.com/p/chromium/issues/detail?id=4197&can=1&q=allow-file-access-from-files&colspec=ID%20Stars%20Pri%20Area%20Feature%20Type%20Status%20Summary%20Modified%20Owner%20Mstone%20OS 了解此标志的完整历史、为什么它会这样以及为什么会这样实现。

【讨论】:

我正在通过 QWebKit 使用 Webkit。我在 Qt 文档中找不到有关 allow-file-access-from-files 的任何信息。这按预期工作:body background-image: url(file:///tmp/bg.png); ,所以看起来这是在 QWebKit 中默认启用的。 是的,以 http:// 开头的图像将毫无问题地加载。我在 Qt 文档中找到了 QWebSettings::LocalContentCanAccessFileUrls,我可以确认 - 默认情况下它是启用的。 你终于找到原因了吗? 不,很遗憾,我没有:-( 看起来 qrc 引用缺少第三个正斜杠。

以上是关于为啥 QWebkit 在 -webkit-scrollbar css 中使用时不解析 file:// 和 qrc://?的主要内容,如果未能解决你的问题,请参考以下文章

QWebKit 在特定平台上不显示某些图像

使用 QWebKit 的永久 cookie——从哪里获得 QNetworkAccessManager?

如何让 QWebKit 显示图像?

QWebkit无法检测NPAPI插件

没有为架构 x86_64 找到带有 QWebKit 符号的 Qt 项目

QWebKit linkClicked 信号从不触发