标签: javascript-events

如何在Javascript中触发个人事件

我不能在IE中使用Javascript来发起个人事件.在Firefox中工作很棒.

我的代码是:

var evento; 
if(document.createEventObject)  
{  
   evento = document.createEventObject();  
   document.fireEvent('eventoPersonal', evento);     
}  
//FF  
else  
{  
    evento = document.createEvent('Events');  
    evento.initEvent('eventoPersonal',true,false);  
    document.dispatchEvent(evento);  
}
Run Code Online (Sandbox Code Playgroud)

但是当尝试document.fireEvent('eventoPersonal', evento);在IE中执行时,它不起作用.如何在IE中解除自定义事件?

在Internet Explorer中,我在执行的行中收到错误:"无效的参数" document.fireEvent('eventoPersonal', evento);

javascript javascript-events

10
推荐指数
2
解决办法
2万
查看次数

当DIV在视图中时触发Javascript事件

当某个DIV进入页面时,是否可以触发特定的javascript事件?

比方说,我有一个非常大的页面,比如2500x2500,我有一个位于1980x1250位置的40x40 div.div不一定是手动定位的,它可能存在,因为内容将其推到那里.现在,当用户滚动到div可见的点时,是否可以运行一个函数?

javascript javascript-events

10
推荐指数
2
解决办法
2万
查看次数

window.onload似乎在加载DOM之前触发(JavaScript)

我遇到window.onload和document.onload事件的问题.我读到的所有内容都告诉我,在DOM完全加载其所有资源之前,这些内容不会触发,似乎这对我来说不会发生:

我在Chrome 4.1.249.1036(41514)和IE 8.0.7600.16385中尝试了以下简单页面,结果相同:两者都显示消息"It failed!",表示myParagraph未加载(因此DOM似乎不完整).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <script type="text/javascript">
            window.onload = doThis();
            // document.onload gives the same result

            function doThis() {
                if (document.getElementById("myParagraph")) {
                    alert("It worked!");
                } else {
                    alert("It failed!");
                }
            }
        </script>
    </head>

    <body>
        <p id="myParagraph">Nothing is here.</p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我在外部.js文件中使用比这更复杂的脚本,但这说明了问题.我可以让window.onload设置一个计时器半秒来运行doThis(),但这似乎是一个不优雅的解决方案,并没有回答为什么window.onload似乎没有做什么的问题每个人都这样说.另一个解决方案是设置一个定时器,用于检查DOM是否已加载,如果不是,它将在半秒后调用自身(因此它将继续检查,直到加载DOM),但这对我来说似乎过于复杂.是否有更合适的事件要使用?

dom javascript-events onload getelementbyid onload-event

10
推荐指数
3
解决办法
2万
查看次数

打印另一页的内容

在以下链接中

<a href=\"#\" onclick=javascript:print(\"\") style=\"color:blue;\">Print</a>"
<script>
 function print()
 {
      //How to print the contents of another page
 }
Run Code Online (Sandbox Code Playgroud)

html javascript printing javascript-events

10
推荐指数
4
解决办法
3万
查看次数

Javascript添加事件跨浏览器功能实现:使用attachEvent/addEventListener vs内联事件

为了添加事件,我们可以使用这个简单的第一个解决方案:

function AddEvent(html_element, event_name, event_function) 
{       
   if(html_element.attachEvent) //Internet Explorer
      html_element.attachEvent("on" + event_name, function() {event_function.call(html_element);}); 
   else if(html_element.addEventListener) //Firefox & company
      html_element.addEventListener(event_name, event_function, false); //don't need the 'call' trick because in FF everything already works in the right way          
} 
Run Code Online (Sandbox Code Playgroud)

或者这第二个解决方案(添加内联事件):

function AddEvent(html_element, event_name, event_function) 
{       
   var old_event = html_element['on' + event_name];
   if(typeof old_event !== 'function')
      html_element['on' + event_name] = function() { event_function.call(html_element); };
   else
      html_element['on' + event_name] = function() { old_event(); event_function.call(html_element); };
}
Run Code Online (Sandbox Code Playgroud)

这些都是跨浏览器,可以这种方式使用: …

javascript events event-handling javascript-events

10
推荐指数
1
解决办法
1万
查看次数

IE仅在按F12后运行javascript

我在使用Javascript的Internet Explorer中遇到了一个奇怪的问题.在每个浏览器中,我都进行了测试,启用了javascript,但它似乎只有在我按下F12后才能运行,在调试模式下运行它.更令人困惑的是,在启动IE调试器后,一切都按照假设工作.任何想法可能是什么?

javascript internet-explorer javascript-events

10
推荐指数
1
解决办法
4276
查看次数

如何将onScroll事件添加到iScroll4?

iScroll4onScroll尚不支持该事件.

有没有已知的方法来扩展iScroll以支持onScroll事件?

javascript jquery javascript-events iscroll4

10
推荐指数
1
解决办法
1万
查看次数

如何在Javascript中增加最大调用堆栈?

我有一个可以解雇的事件.我尝试使代码尽可能高效,但在某些情况下它可以达到最大调用堆栈,这是我无法控制的.它不是一个无限的堆栈,它会在某个时刻结束,但有时它可能会因为极限而在它完成之前崩溃.

如果我设置2个类似的事件监听器并拆分代码,我会增加调用堆栈的数量吗?或者我该怎么办?

更新:它是关于DOM更改事件(仅使用Webkit,因此不关心其他浏览器),它也可以根据某些条件修改DOM.我还没有真正达到这个限制,但从理论上说,它可能会.我仍在优化代码,以尽可能减少DOM操作.

更新2:我包括示例(非真实)示例:

document.addEventListener('DOMSubtreeModified', function(event){

    this.applyPolicy(event);

}, true);

function applyPolicy(event){
    if( typeof event != "undefined" ){
        event.stopPropagation();
        event.stopImmediatePropagation();
    }

    if( !isButtonAllowed ){
        $('button:not(:disabled)').each(function(){

           $(this).attr('disabled', true);

        });
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是一个示例代码,但即使在这种情况下,如果您说100个按钮,调用堆栈也将在100秒内.请注意,如果使用$('button').attr('disabled', true);,这将导致调用堆栈问题,因为jQuery将尝试无限地修改DOM.

javascript jquery dom javascript-events

10
推荐指数
2
解决办法
3280
查看次数

如何检测点击但不使用jQuery拖动?

我有代码,当用户点击p标签时选择文本但我不想在用户选择里面的文本时这样做.是否有可能检测到点击但没有阻力?

我有这样简单的代码:

$('.conteiner').on('click', 'p.xxx', function() {
   $(this).selection();
});
Run Code Online (Sandbox Code Playgroud)

但即使我在mousedown和mouseup之间拖动,也会执行click.选择是一个使用getSelection或Range选择文本的插件.

javascript jquery javascript-events mouseevent

10
推荐指数
1
解决办法
6403
查看次数

在React中删除事件侦听器(lodash.throttle)

嘿stackoverflowers,

removeEventListener()当我不使用throttle()lodash时工作.

   window.addEventListener('scroll', this.checkVisible, 1000, false);
     window.removeEventListener('scroll', this.checkVisible, 1000, false);
Run Code Online (Sandbox Code Playgroud)

(我绑定了构造函数中的方法)


不幸的是,throttle(this.checkVisible)功能缠绕它 - 不起作用.我认为这是因为当尝试删除监听器时,throttle()会生成新的实例,也许我应该全局绑定它.怎么样(如果是这样的话)?

  import React from 'react';
    import throttle from 'lodash.throttle';

    class About extends React.Component {
      constructor(props) {
        super(props);

        this.checkVisible = this.checkVisible.bind(this);
      }

      componentDidMount() {
        window.addEventListener('scroll', throttle(this.checkVisible, 1000), false);

      }

      checkVisible() {
       if (window.scrollY > 450) {
        // do something
        window.removeEventListener('scroll', throttle(this.checkVisible, 1000),
        false);
        }
      }

      render() {
        return (
          <section id="about"> something
          </section>
        );
      }
    }

    export default About;
Run Code Online (Sandbox Code Playgroud)

谢谢,善意的人!

javascript events javascript-events reactjs

10
推荐指数
1
解决办法
2910
查看次数