本日、ページ上の機能が使用できないというバグが報告されました。コンソールを開くと、「オブジェクトは関数ではありません」というエラーが表示されます。
最近この機能に触れていないのに、なぜ突然問題が発生するのでしょうか?主要なブラウザはすべて、オンラインになったときにテストされました。
奇妙ではありますが、それでも問題は解決します。コードを見ると、ラジオオブジェクトの name 属性が関数名と同じ名前になっていることがわかりました。コードは次のとおりです:
<body> <input type="radio" name="test" onclick="test();"/> <br/> <form action=""> <input type="radio" name="test" onclick="test();"/> </form> </body> <script type="text/javascript"> function test(){ alert("11"); } </script>
関数名を変更して問題を解決しました。しかし、以前はこのような関数名で正常に使用できていたため、根本的な原因は見つかりませんでした。コードを変更
onclick="アラート(テスト);"
「object HTMLInputElement」がポップアップし、ブラウザがテストを dom オブジェクトに解析していることがわかりました。
スクリプトテスト後も関数alert(test)はそのままです。
svn バージョンを見ると、別の機能を実行しているときにラジオをラップするフォームを追加していることがわかりました。これにより、ブラウザーの解析エラーが発生します。
要約: 変更されていないコードは問題ではない可能性があります。変更によって他の問題が発生した可能性があります。ブラウザの互換性の問題の中には、コードの不規則性が原因で発生するものもあります。今後は、標準化された方法でコードを記述する必要があります。
フォームを追加した後にブラウザー解析の問題が発生する理由を知っている専門家がいたら、教えていただけますか。どうもありがとうございます!