相关疑难解决方法(0)

如何使用JavaScript检测地址栏更改?

我有一个Ajax繁重的应用程序,可能有一个URL,如

http://example.com/myApp/#page=1
Run Code Online (Sandbox Code Playgroud)

当用户操作站点时,地址栏可以更改为类似的内容

http://example.com/myApp/#page=5
Run Code Online (Sandbox Code Playgroud)

无需重新加载页面.

我的问题是以下顺序:

  1. 用户为第一个URL添加书签.
  2. 用户操纵应用程序,使得第二个URL是当前状态.
  3. 用户单击在步骤1中创建的书签.
  4. 地址栏中的网址从http://example.com/myApp/#page=5更改为http://example.com/myApp/#page=1,但我不知道如何检测变化发生了.

如果我检测到某个更改,JavaScript会对其进行操作.

javascript address-bar javascript-events

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

如何在Youtube上检测页面导航并在呈现页面之前修改HTML?

我正在制作一个简单的Chrome扩展程序,以在YouTube播放列表中添加每个视频的长度,并在页面中插入总长度.我已经成功了,但我的脚本仅在刷新页面后才起作用,但在网站导航时却不起作用.但这不是很方便.

是否有可能在Youtube上检测页面导航并在浏览器中呈现之前将HTML插入到页面中,以便立即显示添加的内容而不会有任何延迟并且不需要刷新页面?

示例链接:https://www.youtube.com/playlist?list = PL_8APVyhfhpdgMJ3J80YQxWBMUhbwXw8B

PS我的问题与在greasemonkey脚本中显示后立即修改元素(不是在页面完全加载后)后的问题不同?因为我已经尝试过MutationObserver并且问题是相同的 - 需要刷新才能显示对网页的更改:

var observer = new MutationObserver(function(mutations) {
    for (var i=0; i<mutations.length; i++) {
        var mutationAddedNodes = mutations[i].addedNodes;
        for (var j=0; j<mutationAddedNodes.length; j++) {
            var node = mutationAddedNodes[j];
            if (node.classList && node.classList.contains("timestamp")) {
                var videoLength = node.firstElementChild.innerText;
                observer.disconnect();    

                var lengthNode = document.createElement("li");
                var lengthNodeText = document.createTextNode(videoLength);
                lengthNode.appendChild(lengthNodeText);
                document.getElementsByClassName("pl-header-details")[0].appendChild(lengthNode);

                return;
            }
        }
    }
});
observer.observe(document, {childList: true, subtree: true});
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-extension

12
推荐指数
2
解决办法
3966
查看次数

popstate事件处理程序似乎无法正常工作

我遇到了'popstate'事件处理程序的问题,这是我的代码:

window.addEventListener("popstate", function (event){
    if (event.state) {
        alert('abc')
    }
});

// The data object is arbitrary and is passed with the popstate event.
var dataObject = {
    createdAt: '2011-10-10',
    author: 'donnamoss'
};

var url = '/posts/new-url';
history.pushState(dataObject, document.title, url);
Run Code Online (Sandbox Code Playgroud)

我预计这个代码会在执行时弹出一个警告框,但没有任何反应.

这里有什么不对吗?

谢谢.

javascript

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

在打开的窗口中收听URL更改

如果我打开一个窗口(带window.open),我可以检测到它的URL何时发生变化(特定的),具体如下:

  • 该窗口的初始URL位于另一个域(确切地说是Facebook)
  • 我有兴趣检测的URL也是

我需要这个用于身份验证.请参阅本页底部的"桌面应用".

javascript facebook cross-domain

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

检测网址上的更改

我需要一些东西来检测网址上的更改,但页面不会回发,它会动态更改,只添加html中的div,所以URL页面是这样的

HTTP://www.examplepage/conversations/44455

当我点击页面的另一部分时,它就是

HTTP://www.examplepage/conversations/44874

它不仅在最后变化,而且像这样

HTTP://www.examplepage/settings

没有做回发和重新加载JavaScript所以我的问题是,有没有办法检测这些变化?和事件监听器但如何?

我搜索并且每个人都说哈希事件,但是在任何哈希之后我没有任何值,所以它不起作用

编辑

只是为了记录,我没有页面的代码,也没有访问权限,我会更好地解释,我正在做一个后台谷歌扩展,我只是添加了一个幻灯片到现有页面,这个页面改变了我的方式我解释的方式以上.url会像每个页面一样发生变化,但是它们会更改html中的div,这样页面就不必再次收取所有内容了

javascript url jquery google-chrome-extension dom-events

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

为什么greasemonkey在facebook中没有检测到某些页面更改?

我试图在facebook中对user.js进行/ message页面,但看起来像在导航从/到/消息更改时,却没有注意到.它也出现在其他内部页面中.首先我认为它是由AJAX导航引起的,但URL改变了(不是散列部分),所以这是正常的导航,对吧?

这是我使用的测试页面:

// ==UserScript==
// @name           Test
// @namespace      none
// @description    just an alert when page changes
// @include        http*://www.facebook.com/*
// ==/UserScript==

alert(location.href);
Run Code Online (Sandbox Code Playgroud)

如何正确检测页面更改?


Firefox版本:6.0.2

Greasemonkey版本:0.9.11

javascript greasemonkey facebook

5
推荐指数
1
解决办法
2098
查看次数

如何使用 JavaScript 观察 URL 的变化?

Window 事件文档popstate说明:

请注意,仅调用history.pushState()or history.replaceState()不会触发popstate事件。该 popstate事件将通过执行浏览器操作触发,例如单击后退或前进按钮(或调用history.back()history.forward()在 JavaScript 中)。

我需要一种在 URL 更改时通过不触发popstate事件的方式(例如history.replaceState())来执行某些代码的方法。最好使用 MutationObserver API [1],并且绝对不要每 x 秒轮询一次 URL。

此外,hashchange不会这样做,因为我必须对URL 中的每个更改采取行动,而不仅仅是哈希部分。

那可能吗?


[1]在另一个问题上解释为什么 MutationObserver API 对此不起作用。


(其他)相关问题:

javascript events mutation-observers

4
推荐指数
1
解决办法
1286
查看次数

捕获/覆盖Javascript重定向

我将如何覆盖/捕获JavaScript重定向?

例如:

window.location.href="http://example.com";
Run Code Online (Sandbox Code Playgroud)

值“ http://example.com”将被捕获并可能被更改。

html javascript redirect dom href

3
推荐指数
1
解决办法
9365
查看次数

ASP.NET MVC在离开当前页面时放弃会话

Session.Abandon()当用户离开他正在观看的页面时,我需要触发.如果用户只刷新页面会话必须保留.我试图在卸载页面时执行此客户端触发ajax调用,window.addEventListener("unload", function(e)...但我无法区分用户是刷新页面还是离开页面.我目前正在使用ASP.NET MVC5.请问有什么建议吗?

javascript c# asp.net asp.net-mvc

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