Javascript 为什么此代码可以';你不能在IE下工作吗? $html.=' “.$GLOBALS[“PoweredBy”];

Javascript 为什么此代码可以';你不能在IE下工作吗? $html.=' “.$GLOBALS[“PoweredBy”];,javascript,html,css,Javascript,Html,Css,为什么这个输入代码不能在IE下工作?当我单击IE下的图像时,它无法工作。它无法提交表单。也就是说,它不能订阅时事通讯。但在chrome和Firefox下可以 当我把它换成 $html .= '<div id="submit"> <input type="image" name="subscribe" onmouseover="this.src=\'images/1_hv.jpg\'" onmouseout="this.src=\'images/1.jpg\'" sr

为什么这个输入代码不能在IE下工作?当我单击IE下的图像时,它无法工作。它无法提交表单。也就是说,它不能订阅时事通讯。但在chrome和Firefox下可以

当我把它换成

   $html .= '<div id="submit">  
 <input type="image" name="subscribe" onmouseover="this.src=\'images/1_hv.jpg\'" onmouseout="this.src=\'images/1.jpg\'"
src="images/1.jpg"
 value="'.$data["button"].'" onClick="return checkform();"></div>
<a id="cancel" href="'.getConfig("unsubscribeurl").'&id='.$id.'">'.$GLOBALS["strUnsubscribe"].'</a>
</form>
'.$GLOBALS["PoweredBy"];


当使用IE、firefox、chrome时。所有这些都可以工作。

这是因为你滥用了
来拥有一个带有背景图像的按钮。
是一个图像地图,您可以在其中对按钮上鼠标指针的X和Y坐标感兴趣。这些值即作为请求参数发送

在HTML/PHP术语中

     <input type="submit" name="subscribe" value="'.$data["button"].'" onClick="return     checkform();"> 
然而,在MSIE以外的现代浏览器上,也会发送按钮的“普通”名称和值,可能是为了在设计拙劣的网站上更加宽容

$x = $_POST['subscribe.x']; // Contains X coordinate of mouse pointer on button.
$y = $_POST['subscribe.y']; // Contains Y coordinate of mouse pointer on button.
依靠服务器端的
$\u POST['subscribe']
可以解释为什么表单不能在MSIE上工作

另请参见w3 HTML规范的摘录:

图像

创建一个图形提交按钮。
src
属性的值指定将装饰按钮的图像的URI。出于可访问性原因,作者应通过
alt
属性为图像提供替代文本

当使用定点设备单击图像时,将提交表单,并将单击坐标传递给服务器。x值以图像左侧的像素为单位测量,y值以图像顶部的像素为单位测量提交的数据包括name.x=x-value和name.y=y-value,其中“name”是
name
属性的值,x-value和y-value分别是x和y坐标值。


因此,要解决您的问题,您有两种选择:

  • 检查是否存在
    subscribe.x
    和/或
    subscribe.y
    请求参数,以采取相应的措施(不推荐)

  • 不要仅仅为了在按钮上有背景而滥用图像输入类型,只需使用CSS(更推荐):

    请注意,
    :hover
    伪选择器在IE6中对
    以外的元素不起作用,但我不希望您关心此浏览器。如果您这样做了,那么在JS角查看解决方案


  • 这是因为你滥用了
    来设置一个带有背景图像的按钮。
    是一个图像地图,您可以在其中对按钮上鼠标指针的X和Y坐标感兴趣。这些值即作为请求参数发送

    在HTML/PHP术语中

         <input type="submit" name="subscribe" value="'.$data["button"].'" onClick="return     checkform();"> 
    
    然而,在MSIE以外的现代浏览器上,也会发送按钮的“普通”名称和值,可能是为了在设计拙劣的网站上更加宽容

    $x = $_POST['subscribe.x']; // Contains X coordinate of mouse pointer on button.
    $y = $_POST['subscribe.y']; // Contains Y coordinate of mouse pointer on button.
    
    依靠服务器端的
    $\u POST['subscribe']
    可以解释为什么表单不能在MSIE上工作

    另请参见w3 HTML规范的摘录:

    图像

    创建一个图形提交按钮。
    src
    属性的值指定将装饰按钮的图像的URI。出于可访问性原因,作者应通过
    alt
    属性为图像提供替代文本

    当使用定点设备单击图像时,将提交表单,并将单击坐标传递给服务器。x值以图像左侧的像素为单位测量,y值以图像顶部的像素为单位测量提交的数据包括name.x=x-value和name.y=y-value,其中“name”是
    name
    属性的值,x-value和y-value分别是x和y坐标值。


    因此,要解决您的问题,您有两种选择:

  • 检查是否存在
    subscribe.x
    和/或
    subscribe.y
    请求参数,以采取相应的措施(不推荐)

  • 不要仅仅为了在按钮上有背景而滥用图像输入类型,只需使用CSS(更推荐):

    请注意,
    :hover
    伪选择器在IE6中对
    以外的元素不起作用,但我不希望您关心此浏览器。如果您这样做了,那么在JS角查看解决方案


  • 哪个部分不起作用?字符串中的反斜杠进行了无意义的转义?
    onmouseout
    处理程序之后的属性之间没有空格?你试过通过w3c验证器运行它吗?@jeffamaphone-这不是毫无意义的代码是回音的一部分我想检查
    $data[“button”]
    请粘贴更多的代码还有JS部分..@pst-为什么?如果他使用的是
    echo'blabla。。value=“”.$var.“blabla”;
    ?当我单击图像按钮时,它不能提交表单。也就是说,它不能订阅时事通讯。但是在firefox和chrome下。它可以。所以我认为$data[“按钮”]没问题。当我将其更改为哪个部分不起作用时?字符串中的反斜杠执行无意义的转义?在
    onmouseout
    处理程序后属性之间没有空格?您是否尝试过通过w3c验证程序运行它?@jeffamaphone-并非无意义此代码是回声的一部分我想检查
    $data[“button”]
    请在JS部分粘贴更多代码..@pst-为什么?如果他使用
    echo'blabla..value=“”..var.'blabla'?当我单击图像按钮时,它无法提交表单。也就是说,它不能订阅时事通讯。但是在firefox和chrome下。它可以。所以我认为$data[“按钮”]是可以的。当我把它换成
    
    <input type="submit" id="subscribe" name="subscribe">
    
    #subscribe {
        border: 0;
        width: 100px; /* Let it match the actual image's dimensions. */
        height: 20px; /* Let it match the actual image's dimensions. */
        background-image: url('images/1.jpg');
    }
    #subscribe:hover {
        background-image: url('images/1_hv.jpg');
    }