可以在IE8中使用Javascript,但不能在chrome和safari等最新浏览器中使用
Javascript working in IE8 but not chrome and safari and other latest browsers
以下是javascript代码
var text;
var name;
window.onload = init;
function init() {
var button = document.getElementById("submitButton");
text = document.getElementById("nameTextInput");
button.onclick = handleButtonClick;
}
function handleButtonClick() {
if (text.value == "") {
alert("oops !! Enter Name");
}
else {
var content = document.getElementById("content");
content.removeChild(h4);
content.removeChild(img);
content.removeChild(form);
name = document.getElementById("name");
name.innerHTML = text.value + ", I am tracking you at ";
getMyLocation();
}
}
当我单击按钮时,元素会被删除,但namediv不会显示任何内容。它在IE8上运行,但在chrome、safari和opera中却步履蹒跚。
以下是HTML:-
<body>
<div class="topMiddle">Locate ME ;-)
</div>
<div id="content" class="content">
<h4 id="h4">Your Name</h4>
<img id ="img" src="rows-hand-.png" alt="arrow image" height="70" width="70" />
<form id="form">
<input type="text" id="nameTextInput" size="40" placeholder="Enter your name dear" class="inputTextClass">
<input type="button" id="submitButton" value="Submit" class="inputButtonClass">
</form>
<div id="name" class="name">
</div>
<div id="user" class="user">
<div id="map_canvas"></div>
</div>
<div id="me" class="me">
</div>
</div>
以下是CSS:-
.content
{
text-align:center;
margin-top:10px;
}
h4
{
color: #E9E9E9;
}
.inputTextClass
{
width:150px;
}
.inputButtonClass
{
margin-top:20px;
width:80px;
}
.name
{
color:#000;
font-size:16px;
}
编辑
这是在线链接:-http://rdinvent.com/locateMe.html
此代码不应该工作,因为您没有定义变量h4
、img
和form
。
content.removeChild(h4);
content.removeChild(img);
content.removeChild(form);
它之所以能在IE8中工作,是因为默认情况下,IE会为具有相同名称的id
属性的每个元素生成全局JavaScript变量。因此h4
、img
和form
等效于IE中的以下代码
h4 = document.getElementById('h4')
img = document.getElementById('img')
form = document.getElementById('form')
只要添加这个,代码也可以在其他浏览器中工作。
这里发生的情况是,实际上并不是使用自己的变量,名为name
,而是全局对象window
的属性(名为name
(,因此这相当于使用window.name
,它是一个字符串,不能设置为任何其他类型(浏览器强制执行(。因此,当您将其设置为div时,它会被转换为一个字符串,而该字符串上没有innerHTML属性,因此您将使用该名称设置一个新属性,但该属性不会起任何作用。
你可以做两件事:
- 您可以将全局变量
name
重命名为不在window
对象中的内容(如name1
或inputName
( - 您可以将所有代码放入一个函数中并运行该函数。这将创建一个新的范围,您的变量将覆盖并隐藏全局范围
(function(){ /* your code goes here */ })();
编辑:
正是这个name
把一切都搞砸了:
name = document.getElementById("name");
将该行和以下内容替换为:
document.getElementById("name").innerHTML = text.value + ", I am tracking you at ";
当然,一开始就去掉var name;
。
name
是全局属性(window.name(,否则不应在全局范围中使用。
是表单外的div"名称"。
在浏览器中启用javascript。。。检查此链接以获取参考
调整图像、JavasScript和其他web内容设置
并非所有浏览器都支持直接设置innerHTML
或innerText
。您可以做的是创建一个文本元素并作为子元素进行追加。
- Safari浏览器上的“强制另存为”对话框
- /如何使用java脚本在safari浏览器中获取活动的Tab url
- Safari浏览器中的格式化日期不正确
- IPAD safari 浏览器不支持 window.open JavaScript 方法
- moz框阴影选项在safari浏览器中不反映
- toLocaleString()不会'无法在Safari浏览器中工作
- 使用Safari浏览器调试Firebreath代码
- Safari浏览器返回按钮问题
- 移动safari浏览器的滚动问题
- html+css+js组合在Google Chrome或Safari浏览器中无法正常工作
- 使用Safari浏览器的Javascript的局域网本地IP地址
- Ipad的safari浏览器中window.showModalDialog()的兼容性问题
- 在Safari浏览器上,User.Identity.Name为空
- 在ipod上的safari浏览器中运行asp.net应用程序
- 加载PDF文件/网址在Safari浏览器中显示黑屏
- 创建可在 Safari 浏览器中使用的书签链接
- 在 Safari 浏览器中启用和禁用表单域
- 弹出窗口在iPad safari浏览器中无法正常运行
- 当用户在移动 Safari 浏览器上离开页面时暂停声音
- 无法加载资源:下载多个文件时,Safari 浏览器中的帧加载中断