Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Greasemonkey:style=”时如何做某事;显示:无&引用;变化?_Javascript_Jquery_Css_Greasemonkey - Fatal编程技术网

Javascript Greasemonkey:style=”时如何做某事;显示:无&引用;变化?

Javascript Greasemonkey:style=”时如何做某事;显示:无&引用;变化?,javascript,jquery,css,greasemonkey,Javascript,Jquery,Css,Greasemonkey,我尝试过attrchange、WaitForkEyelments和MutationObserver,但它们都不适用于我要做的事情(或者我不太了解如何让它们工作lol),所以在5个小时的尝试后,我放弃了 在我玩的一个网站上的一个小游戏中,最后页面顶部的一条消息显示你是赢了还是输了。“再玩一次”按钮位于完成游戏的页面底部。如果不向上滚动,我将无法看到赢/输消息,因此我希望将该消息克隆到屏幕下方,如下所示: $( ".alert alert-success" ).clone().prepend( "#

我尝试过attrchange、WaitForkEyelments和MutationObserver,但它们都不适用于我要做的事情(或者我不太了解如何让它们工作lol),所以在5个小时的尝试后,我放弃了

在我玩的一个网站上的一个小游戏中,最后页面顶部的一条消息显示你是赢了还是输了。“再玩一次”按钮位于完成游戏的页面底部。如果不向上滚动,我将无法看到赢/输消息,因此我希望将该消息克隆到屏幕下方,如下所示:

$( ".alert alert-success" ).clone().prepend( "#play_again" );
$( ".alert alert-danger" ).clone().prepend( "#play_again" );

html看起来像:

<div class="col-md-9">

    <div id="winning" class="col-md-9 col-md-offset-1" style="display: none;">
        <div class="alert alert-success"> … </div>
    </div>
    <div id="loss" class="col-md-9 col-md-offset-1" style="display: none;">
        <div class="alert alert-danger"> … </div>
    </div>

… 
… 
赛后:

<div id="loss" class="col-md-9 col-md-offset-1" style="">
    <div class="alert alert-danger"> … </div>
我的脚本运行得太快,找不到任何用于WaitFork的元素。我想不出一个方法来运行waitforkyellements来更改样式,当我尝试时,我得到了一个无声的脚本失败

在它们被隐藏之前进行克隆或移动不会产生任何效果

在“样式”更改之后,我该如何让脚本运行?最好不要投票,因为我的电脑最近表现得很弱。。。类似于事件侦听器,但用于css

谢谢

这个很容易使用,因为我不是油脂猴的专家,但我试图提供帮助,不管怎样,它的工作原理是,您可以在属性更改时调用一些操作,例如
显示
属性

这是一个简单的例子:

$('#foo').styleListener({

    // the styles that you want to monitor for changes
    styles: ['visibility', 'width', 'height', 'color', 'font-size'],

    // function to be called when a monitored style changes 
    changed: function(style, newValue, oldValue, element) {
        alert(style + ' changed from ' + oldValue + ' to ' + newValue);
    }

});
编辑:

深入了解我们可以使用事件“DOMAttrModified”的事件侦听器,可以找到更多信息

编辑2


这使用了,我认为这是一个很好的解决方案,间隔仅用于旧的IE浏览器(估计这不是一个大问题),找到一个示例

谢谢,但是我不想让某些东西在循环中运行,因为我有一台很弱的计算机。@KatCox我也没有注意到它在循环中工作。我认为这是事件侦听器,让我找到一个更好的解决方案。DOM修改事件由于其性能影响而被弃用,您应该改用变异观察器。抱歉,我想我最近读到了一篇文章,是不是已经贬值了?英雄联盟这仍然是一个很好的答案,也许我的Firefox已经足够老了,可以使用了。@KatCox我很抱歉,我只是很忙,没有好好搜索,但是我喜欢帮助别人,我想我应该解放自己一点,好好搜索。你可以将整个div附加到#play#u,然后你就不需要拦截更改了。你也可以使用css来快速移动按钮,而不是克隆或移动它们。。。它不起作用。。。当页面顶部的一个出现时,它没有出现。。。我以为会……好吧,很公平。CSS over-ride的想法应该仍然有效,而且它是最简单的。
$('#foo').styleListener({

    // the styles that you want to monitor for changes
    styles: ['visibility', 'width', 'height', 'color', 'font-size'],

    // function to be called when a monitored style changes 
    changed: function(style, newValue, oldValue, element) {
        alert(style + ' changed from ' + oldValue + ' to ' + newValue);
    }

});