Переменная PHP не работает для высоты и ширины - PullRequest
0 голосов
/ 19 августа 2011
<head>
<script type="text/javascript">
<!--

 var viewportwidth;
 var viewportheight;

 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight

 if (typeof window.innerWidth != 'undefined')
 {
      viewportwidth = window.innerWidth,
      viewportheight = window.innerHeight
 }

// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)

 else if (typeof document.documentElement != 'undefined'
     && typeof document.documentElement.clientWidth !=
     'undefined' && document.documentElement.clientWidth != 0)
 {
       viewportwidth = document.documentElement.clientWidth,
       viewportheight = document.documentElement.clientHeight
 }

 // older versions of IE

 else
 {
       viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
       viewportheight = document.getElementsByTagName('body')[0].clientHeight
 }

//-->
</script>
    <?php 
        $sizeh = '<script type="text/javascript">
          document.write(viewportheight);</script>';
        $sizew = '<script type="text/javascript">
          document.write(viewportwidth);
    </script>';
    ?>
</head>

//...

    <?php

<iframe  id="frame2" src="'.$row['url'].'" height="<script type=\'text/javascript\'>document.write(viewportheight);</script>px" width="'.$sizew.'px"  ></iframe> ';

?>

// Вышеприведенное все еще не может обработать изменение значений высоты и ширины

Передача вышеуказанных значений из скрипта в iframe не работает, хотя печать переменных показывает, что они имеют значениявнутри них

echo $sizeh; // shows ex:1093
echo $sizew; // shows ex:900

Кто-нибудь, пожалуйста, помогите !!!

Ответы [ 3 ]

4 голосов
/ 19 августа 2011

Здесь много неправильного.

Во-первых, вы не можете так смешивать PHP и JavaScript.Весь PHP обрабатывается до его отправки в браузер, а весь JavaScript обрабатывается после отправки в браузер.Все, что вы делаете, это назначаете эти буквенные строки на $sizeh и $sizew.Эти переменные будут , а не содержать размеры области просмотра, поскольку эти значения могут быть созданы только с помощью JavaScript, что происходит после выполнения вашего PHP-кода.

Также вы можете 'использовать переменные PHP вне PHP.Как только вы закончите синтаксический анализ PHP с помощью ?>, вы перестанете работать в PHP, и к переменным больше не будет доступа.

Вам необходимо выводить переменные PHP из тегов <?php и ?>.Например:

<iframe  id="frame2" 
         src=" <?php echo $row['url']; ?>" 
         height="<?php echo $sizeh; ?> px" 
         width="<?php echo $sizew; ?> px"  
         >
</iframe>

Но опять же, эти переменные не имеют того, что, как вы думаете, они содержат.Вам нужно либо установить эти переменные так, чтобы они имели целочисленные значения изнутри PHP, либо вам нужно собрать все целиком и установить iframe измерения, используя только JavaScript.

Редактировать: I 'Я не очень хорош с JavaScript, поэтому почти наверняка есть лучший способ сделать это (* кашель * jQuery * кашель *), но это должно работать хорошодостаточно:

Во-первых, вам нужно создать функцию JavaScript внутри блока <script> в разделе <head>.Назовите это что-то вроде resize_iframe.В этой функции вы захватите элемент <iframe> и установите его размер:

<script type="text/javascript">
  function resize_iframe() {
    var iframe = document.getElementById("my_iframe");
    iframe.style.height = viewportheight + "px";
    iframe.style.width  = viewportwidth  + "px";
  }
</script>

Затем в разделе <body> вы создадите HTML-страницу как обычно.Здесь нужно быть осторожным при создании элемента <iframe>, вам необходимо:

  • Убедитесь, что вы присваиваете элементу значение идентификатора, совпадающее с тем, которое выиспользуется в функции JavaScript
  • При установке атрибута src в iframe, вы должны помнить, что нужно обернуть эхо PHP в теги <?php и ?>

Likethis:

<iframe id="my_iframe"
        src="<?php echo $row['url']; ?>"
></iframe>

Наконец, вы хотите вызвать функцию resize_iframe из блока <javascript>, который происходит после загрузки остальной части документа.Например, поместите его прямо перед закрывающим тегом </body> для документа.Таким образом, браузер уже создал элемент <iframe>, который вы захватываете, поэтому он будет существовать для изменения JavaScript.Когда эта функция запустится, она изменит размер <iframe>:

<script type="text/javascript"> resize_iframe(); </script>
</body>

Еще одна вещь: я не уверен, откуда вы получаете значения для viewportwidth и viewportheight, но это не таквстроенные переменные для JavaScript.Я могу только предположить, что у вас есть другой код, который создает эти значения.Если нет, вам нужно будет написать это.

0 голосов
/ 19 августа 2011

Я думаю, что, поскольку ваши переменные содержат "в них", вы получите:

<iframe  id="frame2" src="'.row['ur;'].'"
height="<script type="text/javascript">
document.write(viewportheight);</script>px"
width="<script type="text/javascript">document.write(viewportwidth);</script>px">
</iframe>

, поэтому атрибуты "height" и "width" содержат только <script type=, а остальное - мусортак сказать

Я предполагаю, что строка "<iframe...." заключена в теги <?php...?> и ей предшествует эхо некоторой формы. Если нет, то у вас больше проблем

PS - извините за форматирование

0 голосов
/ 19 августа 2011

php можно использовать только между тегами php, которые вам нужно набрать

<?php echo $sizeh; ?>

или

<?=$sizeh;?>

, если ваш хост поддерживает короткие теги.

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