Nano Hash - криптовалюты, майнинг, программирование

Невозможно использовать setTimout, не работает в букмарклете

Могу ли я не использовать setTimeout() в закладке?

Это работает: javascript: document.location="mysite.com"; Сообщить("Тест"); пустота(ы);

Это не так: javascript: document.location="mysite.com"; var t = setTimeout (функция () { оповещение («тест»); }, 10000); пустота(ы);

Почему это?

17.01.2014

  • Я предполагаю, что букмарклет создает свою собственную песочницу JS, а затем пожинает ее до окончания таймера. 18.01.2014
  • В Chrome для меня будет работать следующее: javascript: setTimeout(function(){alert('Hi');}, 10000); Какой браузер вы используете? 18.01.2014

Ответы:


1

Каждый раз, когда вы меняете страницу, весь контекст javascript уничтожается и создается заново (это из соображений безопасности и того факта, что контекстный ад будет создан)

document.location="mysite.com";

эффективно изменяет контекст страницы, уничтожая любую оставленную ссылку на javascript (в вашем случае тайм-аут). В тот момент, когда новая страница начала загружаться, ваша страница имеет новый контекст.

чтобы ваш тайм-аут работал, вам понадобится сервер, который отвечает более 10 секунд (на основе вашего второго аргумента 10000 или для уменьшения тайм-аута примерно до 10 мс).

document.location="mysite.com"; 
var t=setTimeout(function () { alert("test"); }, 10);

зачем тебе это нужно?

17.01.2014
  • Хотите загрузить jQuery, дайте ему возможность загрузиться, а затем сделайте с ним что-нибудь. 18.01.2014

  • 2

    Букмарклеты могут делать не больше, чем обычный встроенный скрипт на веб-странице. Если вы не можете сделать это с помощью обычного JavaScript, вы не можете сделать это с помощью букмарклета.

    В вашем примере, если он запускается как обычный javascript, встроенный в страницу, как только страница перезагружается, тайм-аут исчезнет вместе со всеми другими переменными с этой страницы. (Не вводите в заблуждение тот факт, что JavaScript, встроенный в теги script, будет повторно запускаться при загрузке страницы. Это создаст новый тайм-аут, но предыдущий будет удален.)

    Более точным тестом было бы поместить код букмарклета в гиперссылку на странице и щелкнуть по ней (<a href="javascript:...">test</a>). Это точно так же, как щелкнуть закладку, содержащую тот же код. Что вы не можете сделать с этим, вы не можете сделать с букмарклетом.

    РЕШЕНИЕ ВАШЕЙ ПРОБЛЕМЫ:

    Вариант 1. Букмарклет создает iframe внутри текущей страницы и постоянно перезагружает нужную страницу внутри этого iframe.

    Вариант 2: Букмарклет открывает маленькое окно и внедряет в него javascript, который постоянно перезагружает окно opener.

    18.01.2014
  • Если iframe является тем же доменом, вы можете манипулировать им. Но вам не нужно получать доступ к содержимому iframe, чтобы изменить его местоположение. Просто измените его атрибут src. 20.01.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..