[ Изменить: Я заменяю исходный запутанный вопрос упрощенным примером, демонстрирующим проблему.]
Справочная информация
Я пытаюсь написать пользовательский скрипт, который будет работать в Chrome.Этот скрипт должен вызвать функцию JavaScript AlertMe ()
, которая находится за пределами пользовательского скрипта - эта функция является частью страницы и содержит переменные, которые динамически генерируются на стороне сервера, поэтому это не так. возможно переписать эту функцию в моем юзерскрипте.
Код
Скрипт на странице ( посетить страницу ):
<script type="text/javascript">
function AlertMe()
{
alert("Function AlertMe was called!");
// then do stuff with strings that were dynamically generated
// on the server so that I can't easily rewrite this into the userscript
}
</script>
Мой пользовательский скрипт ( установить в Chrome ):
function tryAlert()
{
if (typeof AlertMe == "undefined") {
console.log('AlertMe is undefined.');
window.setTimeout(tryAlert, 100);
}
else {
AlertMe();
}
}
tryAlert();
Проблема
Когда Я попытался просто вызвать функцию, консоль Chrome сообщила мне, что AlertMe не определен
. Думая, что это произошло из-за того, что мой пользовательский скрипт был запущен до загрузки всех других скриптов, я использовал setTimeout
, чтобы дождаться определения функции AlertMe
.
К сожалению, если вы установите сценарий, а затем посетите страницу, вы увидите, что это просто выводит AlertMe is undefined.
навсегда и никогда не вызывает функцию. Если вы наберете typeof AlertMe
в консоли Chrome, он правильно ответит "function"
, так почему мой пользовательский скрипт всегда считает, что AlertMe
не определено?