为何JavaScript实体无法生效?(涉及property=&{JavaScript-statements};语法)
问题原因与解决方案
问题根源
你用的&{getWidth()};这种JavaScript实体语法是早期Netscape浏览器的非标准特性,现在所有现代浏览器都已完全废弃,浏览器根本不会解析该语法,所以getWidth()和getHeight()函数从未被调用,自然不会弹出输入框。
现代浏览器兼容的解决方案
改用标准DOM操作实现需求,以下是修改后的代码:
<HTML> <HEAD><TITLE>Entities Example</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!--HIDE function getWidth(){ // 用Number转换替代eval,避免安全风险 var w = Number(prompt("Enter image width:")) // 处理用户取消输入或输入无效的情况 return isNaN(w) ? 200 : w } function getHeight(){ var h = Number(prompt("Enter image height:")) return isNaN(h) ? 200 : h } // 页面加载完成后执行逻辑,确保能获取到图片元素 window.onload = function() { var img = document.getElementById("targetImg") img.width = getWidth() img.height = getHeight() } //STOP HIDING--> </SCRIPT></HEAD><BODY> <CENTER><IMG ID="targetImg" SRC="gun1.jpg"> </CENTER></BODY></HTML>
关键修改点
- 给图片标签添加
ID="targetImg",方便通过JS定位DOM元素 - 使用
window.onload确保页面元素加载完成后再执行逻辑,避免找不到图片元素 - 用
Number()替代eval()处理用户输入,消除代码注入风险,同时兼容用户取消输入、输入非数字的情况 - 直接通过DOM操作设置图片的
width和height属性,替代已废弃的实体语法
内容的提问来源于stack exchange,提问作者Content Deleted
相关产品推荐
相关产品推荐

