2015-05-06 2 views
2

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

<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 - я получу всплывающее окно в середине экрана ... это должна быть какая-то проблема с broswer, но я не могу ее идентифицировать.

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

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); 
     } 
+0

Что делает ваша функция 'PopupCenter()' 'выглядит? – user1438038

+0

Я отправил код .. он работает на некоторых браузерах, но не на других. – Aindriu

+1

Я просил код вашей функции '' PopupCenter() '', а не разметку, которая его вызывает. Что происходит внутри этого метода? – user1438038

ответ

1

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

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

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

 
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> 
+0

Я получаю сообщение об ошибке 0x800a138f - Ошибка выполнения JavaScript: ожидаемый объект – Aindriu

+0

Это работает для меня. Добавлена ​​полная демонстрация для демонстрации. – user1438038

+0

Я могу заставить его работать на главной странице Internet Explorer и Chrome, но не на последующих страницах. Почему это так? – Aindriu

Смежные вопросы