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

Всплывающее окно работает в одном браузере, но не работает в другом

Почему всплывающее окно работает в одном браузере (работает в Firefox, Firefox Developer Edition), но не в другом (не в Internet Explorer, частично в Chrome)? В некоторых случаях всплывающее окно будет работать на некоторых страницах веб-сайта в браузере, но при переходе на другую страницу сайта то же самое всплывающее окно не будет работать. Всплывающее окно находится в нижнем колонтитуле

<a href="#" onclick="PopupCenter('/terms_conditions.aspx','','550','700')">Terms
                        &amp; Conditions</a>

Любые идеи ?

функция редактирования всплывающего окна:

<div class="footerTwoBox">
                    <ul class="footTwoLinks" style="width: 500px; float: left;">
                        <li><a href="/voucher">Your Voucher</a></li>
                        <li><a href="#" onclick="PopupCenter('/privacy_policy.aspx','','550','700')">Privacy
                        Policy</a></li>
                        <li><a href="<%=rootUrl %>/customer-care">Contact Us</a></li>
                        <li><a href="/press-room">Press Room</a></li>
                        <li><a href="#" onclick="PopupCenter('/terms_conditions.aspx','','550','700')">Terms
                        & Conditions</a></li>
                        <li><a href="/partners">Partners</a></li>
                        <li><a href="/blog">Blog</a></li>
                        <li><a href="/careers">Careers</a></li>
                        <li><a href="/customer-care/faq" target="_blank">FAQs</a></li>

                    </ul>

когда вы нажимаете на всплывающее окно, оно просто переносит вас в верхнюю часть экрана - без всплывающего окна. Если я зайду в firefox - я получу всплывающее окно посередине экрана... это должно быть какая-то проблема с браузером, но я не могу ее определить.

всплывающая функция

function PopupCenter(pageURL, title, w, h) {
            //alert(w + "  " + h);
            var left = (screen.width / 2) - (w / 2);
            var top = (screen.height / 2) - (h / 2);
            var targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
        }
06.05.2015

  • Как выглядит ваша функция PopupCenter()? 06.05.2015
  • Я разместил код .. он работает в некоторых браузерах, но не в других 06.05.2015
  • Я просил код вашей функции PopupCenter(), а не разметку, которая ее вызывает. Что происходит внутри этого метода? 06.05.2015
  • забыл добавить всплывающую функцию 06.05.2015
  • если я возьму URL-адрес страницы и вставлю только URL-адрес, я теперь получаю всплывающее окно (в Internet Explorer), но с ошибкой «страница не найдена». 06.05.2015

Ответы:


1

Хорошей практикой является возврат false в обработчике onclick. Ссылка обычно ведет на страницу, которую вы хотите показать, а скрипт всплывающего окна вызывается в обработчике событий. Когда вы возвращаете false в своей функции, вы запрещаете браузеру переходить по ссылке.

Это может повлиять или не повлиять на поведение вашего браузера, в зависимости от используемого вами программного обеспечения. На эту тему есть очень хорошее описание здесь, которое охватывает большинство подводных камней. .

Пожалуйста, попробуйте следующий код:

function PopupCenter(pageURL, title, w, h) {
  left = (screen.width / 2) - (w / 2);
  top = (screen.height / 2) - (h / 2);
  targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);

  if (window.focus) {
    targetWin.focus();
  }

  return false;
}

Затем вы можете назвать это так (обратите внимание на дополнительное ключевое слово return):

<a href="#" onclick="return PopupCenter('terms_conditions.aspx', '', '550', '700')">Terms &amp; Conditions</a>

Полная демонстрация:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title>Popup Demo</title>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />

  <script type="text/javascript">
    <!--
    function PopupCenter(pageURL, title, w, h) {
      left = (screen.width / 2) - (w / 2);
      top = (screen.height / 2) - (h / 2);
      targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);

      if (window.focus) {
        targetWin.focus();
      }

      return false;
    }
    // -->
  </script>
</head>

<body>
  <div>
    <a href="#" onclick="return PopupCenter('terms_conditions.aspx', '', '550', '700')">Terms &amp; Conditions</a>
  </div>
</body>

</html>
06.05.2015
  • Я получаю сообщение об ошибке с указанным выше 0x800a138f — ошибка времени выполнения JavaScript: ожидается объект 06.05.2015
  • Я могу заставить его работать на домашней странице Internet Explorer и Chrome, но не на последующих страницах. Почему бы это? 06.05.2015
  • Всплывающее окно не открывается на последующих страницах или открывается, но появляется ошибка «страница не найдена»? Вы также включаете JavaScript на последующих страницах или, может быть, он там отсутствует? 06.05.2015
  • на последующих страницах ничего не появляется, ни одна страница не найдена или что-то в этом роде. это тот же код javascript для других страниц, но он работает только на главной странице. 06.05.2015
  • как вы думаете, в верхней рамке чего-то не хватает? 06.05.2015
  • Я не могу сказать, не зная структуры вашего кода, но я полагаю, что вы неправильно включаете код JavaScript на последующих страницах. Можно ссылку на ваш сайт или его еще нет? В большинстве браузеров есть окно консоли. Появляются ли какие-либо сообщения об ошибках на последующих страницах? Я предлагаю использовать такой инструмент, как Opera Dragonfly или плагин Firebug для Firefox. 06.05.2015
  • посетите darkrome.com — перейдите в нижнюю часть страницы и нажмите «Политика конфиденциальности» и еще одну ссылку «Условия и Условия. Для этих двух должно появиться всплывающее окно. Теперь перейдите на другую страницу, выделенную черным цветом (Рим, Ватикан, Венеция, Флоренция, Милан) в верхней части страницы - как только вы попробуете тот же процесс, всплывающее окно не появится в IE или Chrome, но работает в Firefox и Safari. Ошибка: Uncaught TypeError: window.open не является функцией 06.05.2015
  • Определяете ли вы другую переменную с именем open в области ваших последующих страниц? Если вы это сделаете, возможно, что open будет перезаписана, а window.open() больше не будет допустимой функцией. Например, window.open = false; window.open('foobar'); вызовет такую ​​ошибку, которую вы описали. 06.05.2015
  • Да, только что проверил вашу ссылку. Вы переопределяете open. Сразу после div находится блок кода jQuery с именем filterOptions1. Например, вы должны переименовать var open; во что-то вроде var myOpen;. Остальные переменные, такие как open1, open2 и open3 в порядке, они не мешают window.open(). 06.05.2015
  • Новые материалы

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

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

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

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

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

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

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