我正在开发 PyQt 中的应用程序。我用 QWebView 制作了 UI,它加载了一个 HTML 页面。
此 HTML 页面包含一个 javascript 代码,用于检测文件是否被放置在某个 DIV 上。
$(document).ready(function() {
jQuery.event.props.push('dataTransfer');
$('.input').bind('drop', function(e) {
var files = e.dataTransfer.files;
alert(files[0].name);
});
});
如果我在 Chrome 中加载 HTML 代码,这可以正常工作。
如果我在 QWebView 中运行我的应用程序并 D&D 一个文件,则不会执行 JavaScript 代码。
我扩展了 QWebView 并添加了事件,因此我可以使用 python 捕获 D&D 事件。
class BrowserWindow(QtWebKit.QWebView):
def __init__(self, parent):
super(BrowserWindow, self).__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, event):
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
def dragMoveEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
else:
event.ignore()
def dropEvent(self, event):
if event.mimeData().hasUrls:
event.setDropAction(QtCore.Qt.CopyAction)
event.accept()
urls = event.mimeData().urls()
print str(urls[0].toLocalFile())
else:
event.ignore()
是否可以选择在 QWebView 中直接使用 javascript 捕获此类事件?