popup on body onload не работает в IE? - PullRequest
1 голос
/ 31 мая 2011

Я использую JavaScript для всплывающего окна над текущей страницей при определенных условиях. Он отлично работает с Firefox и Chrome , но не в IE .

 <script type="text/javascript">
          function toggle(div_id) {
              var el = document.getElementById(div_id);
              if ( el.style.display == 'none' ) {el.style.display = 'block';}
              else {el.style.display = 'none';}
          }
          function blanket_size(popUpDivVar) {
              if (typeof window.innerWidth != 'undefined') {
                  viewportheight = window.innerHeight;
              } else {
                  viewportheight = document.documentElement.clientHeight;
              }
              if ((viewportheight > document.body.parentNode.scrollHeight)
&& (viewportheight >
 document.body.parentNode.clientHeight))
 {
                  blanket_height = viewportheight;
              } else {
                  if (document.body.parentNode.clientHeight
  document.body.parentNode.scrollHeight)
 {
                      blanket_height = document.body.parentNode.clientHeight;
                  } else {
                      blanket_height = document.body.parentNode.scrollHeight;
                  }
              }
              var blanket = document.getElementById('blanket');
              blanket.style.height = blanket_height + 'px';
              var popUpDiv = document.getElementById(popUpDivVar);
              popUpDiv_height=blanket_height/2-150;//150
 is half popup's height
              popUpDiv.style.top = popUpDiv_height + 'px';
          }
         function window_pos(popUpDivVar) {
              if (typeof window.innerWidth != 'undefined') {
                  viewportwidth = window.innerHeight;
              } else {
                  viewportwidth = document.documentElement.clientHeight;
              }
              if ((viewportwidth > document.body.parentNode.scrollWidth)
 && (viewportwidth >
 document.body.parentNode.clientWidth))
 {
                  window_width = viewportwidth;
              } else {
                  if (document.body.parentNode.clientWidth
  document.body.parentNode.scrollWidth)
 {
                      window_width = document.body.parentNode.clientWidth;
                  } else {
                      window_width = document.body.parentNode.scrollWidth;
                  }
              }
              var popUpDiv = document.getElementById(popUpDivVar);
              window_width=window_width/2-150;//150
 is half popup's width
              popUpDiv.style.left = window_width + 'px';
          }
          function popup(windowname) {
              blanket_size(windowname);
              window_pos(windowname);
              toggle('blanket');
              toggle(windowname);
          }
         </script>


        <?php if(  $_SESSION['ses']['count'] < 6 && !isset($_SESSION['ses']['cancelBack']) ){ ?>

    <body onload=" popup('popUpDiv'); ">
        <div id="blanket" style="display:none;"></div>
    <div id="popUpDiv" style="display:none; opacity:100;">

    <div id="brouse_now">
        <div class="top_blanck">
            <div class="cross"><a href="<?php echo $this->url(
                                array('controller' => 'index', 'action' => 'cancel'),
                                'default',
                                true) ?>"></a>
            </div>
        </div>
         <div class="bot_blanck">
             <div class="top_text_gree"><?php echo ($this->user[0]['name']); ?>, thanks for coming back !</div>
         </div>
         <div class="bot_blanck">
         <p> Search </p>
         </div>

         <div class="browseget_btn">
             <a href="<?php echo $this->url(
                                array('controller' => 'index', 'action' => 'search'),
                                'default',
                                true) ?>" onclick="popup('popUpDiv')">
                 <img src="<?php echo $this->baseUrl(); ?>/images/button/browseand_getfree.png" alt="" />
             </a>
         </div>

         </div>
    </div>
    </body>

    <?php } ?>

Редактировать

Он также хорошо работает в событии onclick (), но создает проблему с событием onload ().

Какие могут быть возможные причины, пожалуйста, помогите ....

Заранее спасибо .....

1 Ответ

1 голос
/ 31 мая 2011

Не уверен, что я понимаю проблему здесь, но я разбил ее на функцию всплывающих окон (игнорируя другие), и это решение , кажется, подходит лучше всего. Я неесть копия ie8, чтобы проверить это прямо сейчас ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...