click ie8浏览器 不生效_IE8的JavaScript点击事件(onclick)不兼容的解决方法

博客园闪存分页是用JavaScript生成的,今天发现在IE8下点击页码不能翻页,翻页操作是在当前页码的onclick事件中进行的。

开始代码是这么写的:

复制代码 代码如下:

var a = document.createElement("a");

a.setAttribute("onclick", this.ClickFunctionName + "(" + pageIndex + ");Pager.SetCurrent(" + pageIndex + ");");

由于IE8不支持setAttribute方法,这里添加的onclick事件处理程序并未添加上。

后来改为jQuery的attr方法:

复制代码 代码如下:

$(a).attr("onclick", this.ClickFunctionName + "(" + pageIndex + ");Pager.SetCurrent(" + pageIndex + ");");

这样虽然添加上去了,但不管怎么点击,onclick事件处理程序就是不执行,Chrome与Firefox都没这个问题。

最终通过下面的代码解决了问题:

复制代码 代码如下:

var js = this.ClickFunctionName + "(" + pageIndex + ");Pager.SetCurrent(" + pageIndex + ");";

a.onclick = function() { eval(js); }

本文标题: IE8的JavaScript点击事件(onclick)不兼容的解决方法

本文地址: http://www.cppcns.com/wangluo/javascript/101907.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Vue2 中,使用 v-html 指令动态渲染 HTML 代码时,如果 HTML 代码中包含有点事件绑定,会出现点事件生效的问题。这是因为 v-html 渲染的 HTML 代码会被当做静态内容插入到 DOM 树中,而不会像 Vue 模板中的标签一样被 Vue 进行编译和渲染。 为了解决这个问题,可以使用 Vue2 的事件委托机制,将点事件委托给父级元素或者根元素。 具体实现方法如下: 1. 在 div 标签上添加 @click.prevent="handleClick" 事件,用于捕获点事件。 2. 在 handleClick 方法中,判断点事件的 target 是否为包含有点事件绑定的元素,如果是,则执行点事件对应的方法。 3. 在包含有点事件绑定的元素上添加一个自定义属性,用于标识该元素需要绑定点事件。 4. 在 div 标签上使用 v-html 指令渲染 HTML 代码时,将包含有点事件绑定的元素的自定义属性一同渲染出来。 示例代码如下: HTML 代码: ```html <div @click.prevent="handleClick" v-html="html"></div> ``` Vue 实例: ```javascript new Vue({ el: "#app", data: { html: `<p><a custom-click href="javascript:void(0)">点我</a></p>` }, methods: { handleClick(e) { const target = e.target; if (target.hasAttribute('custom-click')) { // 执行点事件对应的方法 console.log('点事件生效了'); } } }, mounted() { // 在 v-html 渲染的 HTML 代码中添加自定义属性 const a = document.querySelector('a[custom-click]'); if (a) { a.setAttribute('custom-click', 'true'); } } }); ``` 通过以上方法,就可以实现在 div 中使用 v-html 渲染的 HTML 代码中绑定点事件,同时点事件也能够正常生效了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值