2012-01-31 1 views
3

Пример # 1:Почему QWebkit не разрешает файл: // и qrc: // при использовании в -webkit-scrollbar css?

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

Пример № 2:

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

Приведенные выше примеры работают только тогда, когда QWebPage показывает локальный HTML-страницу. Для http://stackoverflow.com он не работает. Я установил стиль с помощью QWebSettings :: setUserStyleSheetUrl() - это таблица пользовательских стилей.

ответ

1

Вам необходимо запустить Chrome (предположим, что это браузер) с флагом командной строки --allow-file-access-from-files, иначе он не будет динамически загружать локальные файлы (используя файл: // протокол), так как это может представлять большой риск для безопасности.

Вы можете увидеть 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 для полной истории этого флага, почему он ведет себя так и почему это реализовано так.

+0

Я использую Webkit через QWebKit. Я не могу найти информацию о файлах с правами доступа к файлам в документации Qt. Это работает как ожидалось: body {background-image: url (файл: ///tmp/bg.png); }, поэтому похоже, что это включено по умолчанию в QWebKit. – user1180567

+0

Я вижу .. Это работает, если вы используете изображение из Интернета? – ramsesoriginal

+0

Да, изображение, начинающееся с http: //, будет загружено без проблем. Я нашел QWebSettings :: LocalContentCanAccessFileUrls в документации Qt, и могу подтвердить - он включен по умолчанию. – user1180567