在所有流行的浏览器上,一切正常,但是当我在QT的QWebView
中运行此程序时,出现以下错误:
TypeError: 'undefined' is not a function (evaluating '$('#element-tree').jstree') tree.js:31
TypeError: 'undefined' is not a function (evaluating '$('.modal').on')
我以示例文件夹为例,并设置了一些选项以启用所有可能阻止页面加载流程的功能。
view->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
view->settings()->setAttribute(QWebSettings::AutoLoadImages, true);
view->settings()->setAttribute(QWebSettings::JavascriptEnabled, true);
view->settings()->setAttribute(QWebSettings::JavaEnabled, true);
view->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
view->settings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);
view->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
view->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
view->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
view->settings()->setAttribute(QWebSettings::LinksIncludedInFocusChain, true);
view->settings()->setAttribute(QWebSettings::ZoomTextOnly, true);
view->settings()->setAttribute(QWebSettings::PrintElementBackgrounds, true);
view->settings()->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true);
view->settings()->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true);
view->settings()->setAttribute(QWebSettings::LocalStorageEnabled, true);
view->settings()->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, true);
view->settings()->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
view->settings()->setAttribute(QWebSettings::XSSAuditingEnabled, true);
view->settings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled, true);
view->settings()->setAttribute(QWebSettings::SpatialNavigationEnabled, true);
view->settings()->setAttribute(QWebSettings::LocalContentCanAccessFileUrls, true);
view->settings()->setAttribute(QWebSettings::TiledBackingStoreEnabled, true);
view->settings()->setAttribute(QWebSettings::FrameFlatteningEnabled, true);
view->settings()->setAttribute(QWebSettings::SiteSpecificQuirksEnabled, true);
view->settings()->setAttribute(QWebSettings::JavascriptCanCloseWindows, true);
view->settings()->setAttribute(QWebSettings::WebGLEnabled, true);
view->settings()->setAttribute(QWebSettings::HyperlinkAuditingEnabled, true);
版本:
Qt v4.8.7
jQuery JavaScript Library v3.3.1
jsTree v3.3.6
navigator.userAgent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) fancybrowser Safari/537.21"
如果我尝试在Qt浏览器中检查代码(jquery.min.js,jstree.js),则由于以下原因而关闭:
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
因此,我的猜测之一是内存不足,并且无法加载整个脚本并在加载页面时跳过该脚本。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Minimal, Complete, and Verifiable example</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div class="modal fade autoclean" id="modal-form">
<div class="modal-dialog modal-lg">
<div class="modal-content">
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('.modal').on('hidden.bs.modal', function (e) {
if($(this).hasClass('autoclean')){
$(this).find('.modal-content').empty();
}
});
});
</script>
</body>
</html>
在Qt浏览器中打开上面的页面(如Qt / examples / webkit / fancybrowser中的页面),您会得到TypeError: 'undefined' is not a function (evaluating '$('.modal').on')