JavaScript基于prompt输入值打开弹窗with语句写入内容无显示问题求助
修正方案
核心问题梳理
- 拼接页面内容时未插入用户输入的
yourText变量,新窗口body节点为空 - 内嵌
script的结束标签未转义,会被外层脚本解析为当前脚本的终止标记,代码执行中断 writeToDocument函数未定义闭合标记,也没有被调用,逻辑不会自动执行- with语句内重复添加
docWindow.document前缀,不符合作用域绑定后的使用规范
修正后完整代码
<script> function writeToDocument(){ var textColor, backColor, pageTitle; var yourText, pageContent, docWindow; textColor = prompt("请输入文本颜色:","white"); backColor = prompt("请输入背景颜色:","black"); pageTitle = prompt("请输入页面标题: ","默认标题"); yourText = prompt("请输入新页面的内容:", "页面内容"); pageContent = "<html><head><title>"; pageContent += pageTitle + "</title>"; // 转义结束script标签,避免截断外层脚本 pageContent += "<script>alert('页面「' + document.title + '」创建时间:' + document.lastModified)<\/script>"; // 插入用户输入的内容到body中 pageContent += "</head><body><strong>" + yourText + "</strong></body></html>"; docWindow = open("","docWin","width=250,height=150,resizable=1,status=1"); with (docWindow.document){ // 所有操作都在with作用域内完成,符合要求 open(); bgcolor = backColor; fgcolor = textColor; write(pageContent); close(); } } // 调用函数触发逻辑 writeToDocument(); </script>
效果说明
运行后会依次弹出4个输入框接收用户配置,最终打开的新窗口会自动弹出页面创建时间提示,同时展示用户输入的内容,背景和文本颜色与配置一致。
内容的提问来源于stack exchange,提问作者Lucia
相关产品推荐
相关产品推荐

