相关疑难解决方法(0)

单击后退按钮时是否存在跨浏览器onload事件?

对于所有主流浏览器(IE除外),onload由于后退按钮操作,页面加载时不会触发JavaScript 事件 - 它仅在首次加载页面时触发.

有人能指出我解决这个问题的一些示例跨浏览器代码(Firefox,Opera,Safari,IE,...)吗?我很熟悉Firefox的pageshow活动,但不幸的是Opera和Safari都没有实现这一点.

javascript pageload

180
推荐指数
6
解决办法
18万
查看次数

JavaScript或jQuery中的关键部分

我有一个网页,其中异步触发某个Ajax事件.这个Ajax部分可以被调用一次或多次.我无法控制触发此事件的次数,也无法控制时间.

此外,Ajax部分中有一些代码应作为关键部分运行,这意味着,当它运行时,不应该运行该代码的其他副本.

这是一个伪代码:

  1. 运行JavaScript或jQuery代码
  2. 输入作为Ajax的关键部分(当某个进程正在等待响应回调时,请不要再次进入此部分,直到此过程完成)
  3. 运行更多JavaScript或jQuery代码

我的问题是,我怎样才能按照上述方式运行第2步?如何使用JavaScript或jQuery创建/保证互斥部分.

我理解理论(信号量,锁,等等),但我无法使用JavaScript或jQuery实现解决方案.

编辑

如果你建议一个布尔变量进入临界区,这将不起作用,下面的行将解释原因.

关键部分的代码如下(使用布尔变量建议):

load_data_from_database = function () {

    // Load data from the database. Only load data if we almost reach the end of the page
    if ( jQuery(window).scrollTop() >= jQuery(document).height() - jQuery(window).height() - 300) {

        // Enter critical section
        if (window.lock == false) {

            // Lock the critical section
            window.lock = true;

            // Make Ajax call
            jQuery.ajax({
                type:        'post',
                dataType:    'json',
                url:         path/to/script.php,
                data:        {
                    action:  'action_load_posts'
                },
                success:     function (response) …
Run Code Online (Sandbox Code Playgroud)

javascript jquery semaphore critical-section mutual-exclusion

8
推荐指数
1
解决办法
6470
查看次数

在动态加载内容然后前进和后退时Internet Explorer和Firefox的差异

我正在开发一个Web应用程序,由于数据库访问速度慢,并非页面中的所有内容都是立即加载的,而是在用户在可选择进行选择后单击按钮时动态加载.

这很好用.但是,在动态加载内容后,如果我导航到不同的网页,然后导航回来,在Internet Explorer中,加载的内容将消失,即页面将恢复到最初检索的页面.然而,在Firefox(以及Opera)中,加载的内容仍然存在,即页面看起来就像我导航之前那样.

在我的情况下,Firefox的行为是理想的行为,因为用户会定期导航到子页面并返回主页面.因此,我的问题是,有什么方法可以强制Internet Explorer展示这种行为,还是有任何可能的解决方法来获得所需的结果?

ajax internet-explorer

6
推荐指数
1
解决办法
1688
查看次数