- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 JavaScript 中做水平下拉菜单。它在 Firefox 和 Chrome 上运行良好,但在 IE 中却给我带来了麻烦。
这是我的代码:
function init(){
hideAllSubMenu();
var menuItem = document.getElementById("menu_wrap").getElementsByTagName("div");
for(var index = 0; index < menuItem.length; index++)
{
// if firefox and all oother browsers
if(typeof menuItem[index].addEventListener != "undefined")
{
menuItem[index].addEventListener("mouseover", ShowListener, false);
menuItem[index].addEventListener("click", ShowListener, false);
}
else //IE
{
menuItem[index].attachEvent("onclick", ShowListener);
menuItem[index].attachEvent("onmouseover", ShowListener);
}
}
}
function ShowListener(event)
{
hideAllSubMenu();
var menuItemIdStr = this.id;
var menuItemIdNum = menuItemIdStr.replace(/menu/i, "");
var subMenu = document.getElementById("submenu_wrap" + menuItemIdNum);
subMenu.style.left = this.offsetLeft + "px";
subMenu.style.top = this.offsetTop + this.offsetHeight + 2 + "px";
subMenu.style.display = "block";
}
它似乎在提示this
。我知道在 IE 中事件监听器函数不是复制而是引用,这就是为什么 this
给我一个问题。有办法解决这个问题吗?
我什至尝试为 IE 的 attachEvent
创建单独的函数并直接在其中创建对象路径,但它仍然在提示。
类似的东西:
menuItem[index].attachEvent("onmouseover", ShowListenerIE(menuItem[index]));
注意:我确实打算用 jQuery 重写这个简单的菜单功能,但现在我对学习 JavaScript Core + DOM 很感兴趣,并且想找到解决这个问题的方法。
最佳答案
IE中事件的目标在event.srcElement
中,其他浏览器中也可以从event.target
中获取类似的信息。另请注意,IE 不会将事件作为参数传递给处理程序 - 它位于 window.event
中。所以,一个完整的解决方案:
if (!event)
{
event = window.event; //IE
}
var target;
if (event.target)
{
target = event.target;
}
else if (event.srcElement)
{
target = event.srcElement;
}
//From here on is your code, use target instead of this
参见 here更多血淋淋的细节。免责声明:我的代码未经测试。
关于javascript - attachEvent 带来麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1249958/
当我为我的项目运行“mvn dependency:tree”时,它显示如下: [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ x
我调用 ajax 的脚本 function search_func(value) { $.ajax({ type: "GET", url: "sample.php
我正在使用 SIM 安装 Sitecore 8.1,但在打开启动板时,由于 ajax 请求返回 HTTP 500 错误,出现了几个 Javascript 错误。查看开发人员工具会显示以下消息: htt
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一张 table : +-----------+-------------+------+-----+---------+-------+| Field | Type | N
所以,我对这个阵列很生气,第 2 天让我感到疼痛 *.... 我正在开发面向对象的 PHP 脚本。 我得到一个数组: Array ( [0] => Project Object ( [project_
我正在尝试将我的一个 Rails 项目升级到 Ruby 1.9.2。一切进展顺利,但一个 RSpec 测试失败了。在这个测试中,我需要一个Ruby lib: # file spec/models/my
我可以使用 Maven 的插件 spring-boot:run 运行 Spring Boot,但是当我尝试执行打包的 jar 时,它给出: Error creating bean with name
我是一名优秀的程序员,十分优秀!