передача произвольного HTML во всплывающее окно - PullRequest
0 голосов
/ 28 февраля 2009

Я вызываю свою функцию makewindows из файла PHP примерно так:

echo "<a href='#' onclick=\"makewindows(" . $html . "); return false;\">Click for full description </a></p>";

Это генерирует правильный html, в результате чего появляется всплывающее окно, содержащее html из $ html. Например (большая часть HTML была взята):

<a href="#" onclick="makewindows(&quot;<P align=center><SPAN style=\&quot;FONT-FAMILY: Arial\&quot;>&quot;); return false;">Click for more</a>

Теперь я хочу сделать изображение над ссылкой активным, чтобы отображать изображение вместо HTML, используя тот же метод.

Я сделал переменную $ imagehtml в php следующим образом:

$imagehtml = "<img src='".$imageSrc."' >";

$ imageSrc является результатом другого метода, но всегда обязательно является допустимым URL-адресом для изображения

Передача $ imageHtml в makewindows должна работать (тот факт, что это не стандартная жалоба, html не имеет смысла, по крайней мере, относительно того, почему то, что я пытаюсь, терпит неудачу. Одна и та же строка html в отдельном html-файле отображается в каждом браузере хорошо.)

это приводит к следующему html:

<a href="#" onclick="makewindows(<img src='removed.jpg' >); return false;">
<img src="removed.jpg" width="250" height="250"></a>

Это полностью терпит неудачу. Это не имеет ничего общего с путем к изображению, поскольку окно вообще не создается. Все, что я делаю, это изменяю переданную переменную, конечно, окно все равно должно быть создано, независимо от содержимого html?

это не работает, даже если вы пытаетесь передать: blank, например, определяя imagehtml следующим образом:

$imagehtml = "about:blank";

Результат:

<a href="#" onclick="makewindows(about:blank); return false;">Click for full description </a>

пока еще нет окна.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2009

Вы хотите что-то вроде этого:

$str = '<img src="...">';

echo '<a href="#" onclick="makewindows('
    . htmlspecialchars(json_encode($str))
    . '); return false;">Click for full description</a></p>';

Это сделает правильное кодирование / экранирование.

0 голосов
/ 28 февраля 2009

Вы, вероятно, делаете что-то не так.

Допустим, вы хотите передать этот HTML-код вызову функции JavaScript внутри атрибута HTML:

<img src="removed.jpg" width="250" height="250">

Тогда для этого достаточно:

$html = '<img src="removed.jpg" width="250" height="250">';
echo '<a href="#" onclick="makewindows(' . htmlspecialchars(var_export($html, true), ENT_QUOTES) . '); return false;">Click for full description</a></p>';

Функция var_export преобразует значение в эквивалентное (PHP) выражение, а функция htmlspecialchars , наконец, преобразует метасимволы HTML в ссылки на символы.

Возможно, это не самый элегантный способ, но он работает.

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