加载页面并在单个书签中应用javascript

时间:2010-07-15 14:29:19

标签: javascript bookmarklet

我有一个书签打开我的谷歌日历页面(http://www.google.com/calendar/renderOnline)和一个应用了一些javascript的书签:

的javascript:的document.getElementById( 'gadgetcell')的setAttribute( '风格', '宽度:300像素'); document.getElementsByClassName( 'SN-帧')[0] .setAttribute( '风格',“宽度: 300像素');

有没有办法将这些组合成一个书签,这样我就不必一直点击两次?

谢谢!

3 个答案:

答案 0 :(得分:1)

没有。 bookmarklet在原始页面的上下文中运行,因此它无法更改页面并继续运行。如果您始终希望在页面上运行该代码,则可能会发现GreaseMonkey有用。或者,Stylish允许您将用户样式应用于页面。

答案 1 :(得分:0)

您可以使用扩展程序来获得相同的行为。

例如,在Safari中,您将创建一个启动URL的按钮和一个运行您的书签的注入脚本。 GreaseMonkey和许多其他扩展框架可以做类似的事情。

答案 2 :(得分:0)

我曾考虑使用书签来执行此操作:

javascript:location.href='http://google.com';setTimeout(function(){alert('hi');},2000);

setTimeout函数可以是任何东西,并且由于2秒计时器,页面将有时间加载并且任意代码将针对它执行。但它没有用。无论我试图在setTimeout中调用什么函数,它都只是从不执行,或者它可能在其他一些空间中执行,这些空间在加载新页面时会被销毁或类似的东西。只要没有location.href改变,setTimeout代码就可以作为bookmarklet使用。

但是,我想知道是否更好的方法是将所需页面的AJAX加载到当前空间中,然后尝试执行某些操作。如果我开始尝试,我会在这里更新。