JQuery селекторы: содержит и: первая ошибка.Что вызывает проблемы? - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь выбрать элемент, используя $('div:contains(text)'), но у меня ошибка в консоли:

TypeError: matchExpr [type] .exec не является функцией в Sizzle.tokenize (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 2175) на Sizzle.select (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 2625) в Function.Sizzle [как найти] (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 850) в jQuery.fn.init.find (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 2878) в новом jQuery.fn.init (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 2988) в Window.jQuery (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 144) в short_quest_desc (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 11271) в eval (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 12167) at Window.tms_8e14efa9_4d54_4213_afef_2dcc6a22a1d6 (userscript.html? id = 8e14efa9-4d54-4213-afef-2dcc6a22a1d6: 12183) в: 2: 494

У меня та же проблема, когда я пытаюсь использовать $('.class:first'). Другие селекторы работают нормально. Я использую Chrome / Firefox с расширением Tampermonkey и

  // @require     http://code.jquery.com/jquery-3.3.1.js
    // @grant   unsafeWindow
    // @grant   GM_log
    // @grant       GM_getValue
    // @grant       GM_setValue
    // @grant       GM_deleteValue
    // @grant       GM_listValues
    // @grant       GM_addStyle

Я попытался использовать $.noConflict(); и затем поместил весь скрипт в: jQuery(document).ready(function($){..}); Это не помогает Я попытался удалить в настройках Tampermonkey библиотеку jquery и получить их снова - ничего. Я прочитал некоторые решения, но ничего не помогло.

Я использую, так как содержит div с текстом no id и он находится на разных позициях. Другое дело, что когда я использую Google или MSDN JQuery требуют, я получаю V [g] .exec не является ошибкой функции. Другие селекторы вроде $(div[attribute=value]) отлично работают. В тексте нет специальных символов, и я знаю, что он чувствителен к регистру.

Даже это: console.log($('#msgFullText .msg-quest div:contains(Karawana)')); не работает.

Что может вызвать проблему? Как я могу решить это? Страница не использует jQuery, поэтому нет конфликта.

Вот краткий код:

// ==UserScript==
// @require     http://code.jquery.com/jquery-3.3.1.js

// @name        PDmod
// @description Modyfikacje Blood Wars by Pożeracz Dusz!
// @version     0.0.1

// @match       https://bloodwars.interia.pl/*
// @match       https://*.bloodwars.interia.pl/*
// @match       https://*.bloodwars.net/*
// @match       https://*.bloodwars.pl/*
// @match       https://beta.bloodwars.net/*
// @match       https://old.bloodwars.interia.pl/*

// @grant       unsafeWindow
// @grant       GM_log
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_deleteValue
// @grant       GM_listValues
// @grant       GM_addStyle

// @noframes
// @nocompat Chrome
// ==/UserScript==
jQuery(document).ready(function($){
    var nick_p = GM_getValue(link_id + 'nick');
    var link_id = $(location).attr('host').split('.')[0];
    function remember_nick() {
        if ($('.stats-player .me').length > 0) {
            GM_setValue(link_id + 'nick', $('.stats-player .me').text());
        }
    }
    function array_add(array, sumarray) {
        if (array.length > 0) {
            $.merge(sumarray, array);
        }
    }
    "use strict";
   console.log($('#msgFullText .msg-quest div:contains(Karawana)'));
    function short_quest_desc() {
        console.log($('#msgFullText .msg-quest div:contains(Karawana)'));
        if (GM_getValue(nick_p + link_id + 'shortquest') === true && $('#msgFullText .msg-quest').length > 0){// && $('.msg-quest b:contains("Sprawdzian")').length > 0 || $('.msg-quest b:contains(Test)').length > 0 || $('.msg-quest b:contains(Próba)').length > 0 || $('b:contains(Raport z wyprawy.)').length > 0)) {
            var cash = 0;
            var cash1;
            var is_event;
            var arcane;
            var onetime_item;
            if ($('.msg_metadata_openingInfoTextContent').length > 0) {
                is_event = $('.msg_metadata_openingInfoTextContent').last().text();
            } else {
                is_event = $('.msg-quest b.enabled').text();
            }
            if ($('#msgFullText .msg-quest > div:contains("arkana:")').length) {
                arcane = $('.msg-quest > div:contains("arkana:")').text();
            }
            if ($('.msg-quest > div:contains("używa przedmiotu")').first().length) {
                onetime_item = $('.msg-quest > div:contains("używa przedmiotu")').first().html().replace(/\n/g, '');
            } else {
                onetime_item = 'Brak jednoraza';
            }
            var luck = $('div:contains("(SZCZĘŚCIE)")').first().text();//.split('(');
            console.log(luck);
            luck = (luck[1]).replace(')', '');
            var luck1 = $('.msg-quest > div[value*="(SZCZĘŚCIE)"]').first().text().split('(');
            luck1 = (luck1[1]).replace(')', '');
            var exp = 0;
            var blood = 0;
            var items = [];
            var e_items = [];
            var ldb_items = [];
            var ldsk_items = [];
            var db_items = [];
            var dsk_items = [];
            if ($('#msgClickToReadFullText').length > 0) {
                $('#msgClickToReadFullText').click();
            }
            $('.msg-quest > span.item-link').each(function () {
                cash1 = $(this).attr('onclick');
                cash1 = $.parseHTML(cash1);
                cash1 = $(cash1).find('.item-desc.itemDescContainer span:contains(PLN)').prop('outerHTML'); //
                cash1 = parseInt($(cash1).text().replace(' ', '').replace('PLN', ''));
                cash += cash1;
                if (($(this).text()).substr(0, 5) === 'Epick') {
                    e_items.push(($(this)));
                } else if ($(this).text().substr(0, 20) === "Legendarna Doskonała" || $(this).text().substr(0, 20) === "Legendarny Doskonały" || $(this).text().substr(0, 20) === "Legendarne Doskonałe") {
                    ldsk_items.push(($(this)));
                } else if ($(this).text().substr(0, 16) === "Legendarna Dobra" || $(this).text().substr(0, 16) === "Legendarny Dobry" || $(this).text().substr(0, 16) === "Legendarne Dobre") {
                    ldb_items.push(($(this)));
                } else if ($(this).text().substr(0, 9) === "Doskonała" || $(this).text().substr(0, 9) === "Doskonały" || $(this).text().substr(0, 9) === "Doskonałe") {
                    dsk_items.push(($(this)));
                } else if ($(this).text().substr(0, 5) === "Dobra" || $(this).text().substr(0, 5) === "Dobry" || $(this).text().substr(0, 5) === "Dobre") {
                    db_items.push(($(this)));
                }
            });
            $('.msg-quest > p:contains(Zdobyłaś), p:contains(Zdobyłeś)').each(function () {
                var eb = $(this).text().split('.');
                exp += parseInt(eb[0].replace(/[^0-9\.]/g, ''));
                blood += parseInt(eb[1].replace(/[^0-9\.]/g, ''));
            });
            array_add(db_items, items);
            array_add(dsk_items, items);
            array_add(ldb_items, items);
            array_add(ldsk_items, items);
            array_add(e_items, items);
            $('.msg-quest').empty();
            if (is_event) {
                $('#msgFullText').append("<span class=enabled>Event podczas wypraw: " + is_event + "</span></br>").css('text-align', 'center');
            }
            $('#msgFullText').append("<span class=enabled>" + arcane + "</span></br>");
            $('#msgFullText').append("<span class=enabled>" + onetime_item + "</span></br>");
            $('#msgFullText').append("<span class=enabled>" + luck + "</span></br>");
            if (luck1 !== luck) {
                $('#msgFullText').append("<span class=enabled>" + luck1 + "</span></br>");
            }

            $('#msgFullText').append("<span class=enabled>Doświadczenie zdobyte podczas wypraw: " + exp + " pkt.</span></br>");
            $('#msgFullText').append("<span class=enabled>Krew zdobyta podczas wypraw: " + blood + " l.</span></br>");
            $('#msgFullText').append("<span class=enabled>Znalazłeś podczas wypraw przedmioty o łącznej wartości: " + cash.toLocaleString('pl-PL') + " PLN.</span></br></br>");
            $('#msgFullText').append("<span class=enabled>W trakcie wyprawy znalazłeś przedmioty: </span></br>");
            $(items).each(function () {
                $('#msgFullText').append("<span class='item-link item-caption'" + $(this).prop('outerHTML') + '</br>');
            });
        }
    }
    (function () {
        (short_quest_desc());
    })();
});

console.log($('#msgFullText .msg-quest div:contains(Karawana)')); не работает, независимо от того, использую ли я («Каравана») или (Каравана).

...