簡體   English   中英

瀏覽器兼容性 - 普通的Javascript代碼

[英]Browser Compatibility— Plain Javascript code

我很難在Chrome瀏覽器版本43.0.2357.81 m和OS Windows XP中運行以下代碼。

下面的代碼在Firefox和IE上完美運行。 Chrome瀏覽器是否與Windows Xp兼容。

在chrome中我得到TrpeError:translate不是函數;

提前致謝。

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">
            function translate(event){
                if(event.keyCode == 13 || event.which==13){                 
                    alert("You have entered ENTER key");                    
                }
            } 

        </script>
    </head>
    <body>
        <table>
            <tr>
                <td>User Name: </td>
                <td><input type="text" name="username" id="username"></td>

            </tr>           
            <tr>
                <td>Password :</td>
                <td>
                    <input type="password" name="password" id="password" onkeydown="javascript: translate(event)">
                </td>

            </tr>
            <tr>
                <td></td>
                <td><input type="submit" name="Login" value="Login"></td>

            </tr>

        </table>
    </body>
</html>

編輯:正如Aaron Digulla所指出的,這與我最初想到的Chrome的內容安全政策無關。 不過,我會留下這個答案,因為下面的代碼仍然是處理事件的有效方法。

var passfield = document.getElementById('password');
passfield.onkeydown = function(event) {
     if(event.keyCode == 13 || event.which==13){                 
          alert("You have entered ENTER key");                    
     }
}

以下小提琴顯示了這一點:
https://jsfiddle.net/x0enzmc7/

省略javascript: . 這應該工作:

... onkeydown="translate(event)" ...

但是將函數附加到頁面的onload事件可能不那么脆弱:

function onload() {
    var password = document.getElementById('password');
    password.onkeydown = translate;
}

請注意,在translate()可能未定義event 使用

event = event || window.event;

解決這個問題。

最后,該函數應該返回truefalse ,具體取決於它是否要吞下事件。

如您所見,這很難做到。 只需將jQuery添加到您的頁面並使用它 - 它可以修復所有那些討厭的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM