JavaScript onMouseOver事件失败

Failing JavaScript onMouseOver event

本文关键字:失败 事件 onMouseOver JavaScript      更新时间:2023-09-26

我想在PHP文件中显示onmouseover警报,但它失败了。请帮帮我。

<?php
    $a = '<a href=# onMouseover=alert(';
    $a .= 'Für die Mitnahme von Sportgepäck &#40;Scuba/Diving/Golf Equipment&#41; bis'.
' 15 KG ist es empfehlenswert dieses vorab zu buchen, da sonst am Check-In '.
'Schalter die normalen Übergewichtsraten pro KG berechnet werden &#40;'.
'unabhängig von Ihrer Gepäckauswahl – die Auswahl des aufzugebenden Gepäcks '.
'beinhaltet nicht das Sportgepäck&#41';
    $a .= ')>LINK DESCRIPTION</a>';
    echo $a;
?>

这里不需要PHP。只需编写HTML:

<a href="#" onmouseover="alert('looong string...')">LINK DESCRIPTION</a>

它更易于阅读和调试。

但解释一下为什么你的代码不起作用:你把引号搞砸了。

这是您真正想要的HTML:

<a href="#" onmouseover="alert('my text');">LINK DESCRIPTION</a>

注意每个属性值周围的引号和警报文本周围的单引号。要在PHP中获得这一点,可以通过转义引号来实现:

$a='<a href="#" onmouseover="alert(''';
$a.='Für die [...] Sportgepäck&#41';
$a.= ''')">LINK DESCRIPTION</a>';

转义alert中的字符串,如下所示:

<?php
    $a = '<a href=# onMouseover=alert(';
    $a .= '''Für die Mitnahme von Sportgepäck &#40;Scuba/Diving/Golf Equipment&#41; bis 15 KG ist es empfehlenswert dieses vorab zu buchen, da sonst am Check-In Schalter die normalen Übergewichtsraten pro KG berechnet werden &#40;unabhängig von Ihrer Gepäckauswahl – die Auswahl des aufzugebenden Gepäcks beinhaltet nicht das Sportgepäck&#41''';
    $a .= ')>LINK DESCRIPTION</a>';
    echo $a;
?>
<?php
    $a = '<a href=# onmouseover=alert("';
    $a .= 'Für die Mitnahme von Sportgepäck &#40;Scuba/Diving/Golf Equipment&#41; bis 15 KG ist es empfehlenswert dieses vorab zu buchen, da sonst am Check-In Schalter die normalen Übergewichtsraten pro KG berechnet werden &#40;unabhängig von Ihrer Gepäckauswahl – die Auswahl des aufzugebenden Gepäcks beinhaltet nicht das Sportgepäck&#41';
    $a .= '")>LINK DESCRIPTION</a>';
    echo $a;
?>

不用PHP打印HTML代码,而是转义PHP块:

<?php
// some PHP code and exit PHP block
?>
<a href="#" onmouseover="alert('Für die Mitnahme.....')">LINK DESCRIPTION</a>
<?php
// enter PHP block again
?>

然而,问题在于alert函数中缺少撇号。

曾:

alert(some text)

应该是:

alert('some text')

如果您遗漏了撇号,JavaScript会将您的文本视为变量。

<?php $a='Für die Mitnahme von Sportgepäck &#40;Scuba/Diving/Golf Equipment&#41; bis 15 KG ist es empfehlenswert dieses vorab zu buchen, da sonst am Check-In Schalter die normalen Übergewichtsraten pro KG berechnet werden &#40;unabhängig von Ihrer Gepäckauswahl – die Auswahl des aufzugebenden Gepäcks beinhaltet nicht das Sportgepäck&#41';
echo '<a href='"#'" onmouseover='"alert('"'.$a.''")'">LINK DESCRIPTION</a>';

就这么简单。。。