TypeError:在QT Webbrowser中运行脚本时'undefined'不是函数

时间:2018-09-29 07:39:23

标签: javascript qt webkit

在所有流行的浏览器上,一切正常,但是当我在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')

0 个答案:

没有答案