time javascript

time javascript

本文关键字:javascript time      更新时间:2023-09-26

>我有以下问题:在客户的主页上,导航栏是由javascript加载的,但我需要更改一些URL。如果我只是在 $(document).ready() 上启动我的脚本,它会在客户脚本之前运行并且不起作用。我只能使用 setTimeout 让我的函数等到另一个脚本准备就绪,但它根本不好或安全。我无法更改网站上的任何内容,只能添加一个 javascript - 有没有办法在另一个之后计时?

您可以使用重复的设置超时,以检查菜单是否可访问。

function check_menu(){
    if(document.getElementById('my_menu')==null){
        setTimeout('check_menu()',500);
    } else {
        //do some stuff
    }
}

如果您有关于菜单的信息(如 id 或类),请在元素上使用 onLoad() jQuery 方法。 例如,如果代码是异步加载的,并且您将 onload 添加到内容完成后应触发的最后一个元素之一。

$.post('AsyncCodeLoad.php', function(data) {
    $('#lastElementToLoad').onLoad(RunMyFunction);
});

或者,如果您没有机会将代码插入异步加载中,只需添加到</body>的底部:

    $('#lastElementToLoad').onLoad(RunMyFunction);

只是一个想法。

是的,在 <body /> 标记的底部添加脚本,以确保在所有其他脚本运行之前它不会运行。 但是,仅当您的客户同步加载导航链接时,这才有效。

如果 nav 是异步加载的,请使用 JS 的 setInterval 重复检查导航的内容中是否有链接。 确定已添加链接后,请取消间隔检查并调用脚本的逻辑入口点。

干杯

小提琴:http://jsfiddle.net/iambriansreed/xSzjA/

JavaScript

var
menu_fix = function(){
    var menu = $('#menu');
    if(menu.length == 0) return;
    clearInterval(menu_fix_int);
    $('a', menu).text('Google Search').attr('href','http://google.com');        
},
menu_fix_int = setInterval(menu_fix, 100);

.HTML

<div id="menu"><a href="http://bing.com">Bing Search</a></div>​