TypeError: 'undefined' не является функцией при запуске Script в веб-браузере QT - PullRequest
0 голосов
/ 29 сентября 2018

Все отлично работает во всех популярных браузерах, но когда я запускаю это в QWebView QT, я получаю следующие ошибки:

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"

Если я попытаюсь проверить код (jquery.min.js, jstree.js) в браузере Qt, он закрываетсяиз-за:

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')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...