加载页面并在单个书签中应用javascript
我有一个书签可以打开我的google日历页面(),还有一个bookmarklet可以在上面应用一些javascript: javascript:document.getElementById('gadgetcell').setAttribute('style','width:300px');document.getElementsByClassName('sn-frame')[0].setAttribute('style','width:300px') 有没有一种方法可以将它们组合成一个书签,这样我就不必一直点击两次加载页面并在单个书签中应用javascript,javascript,bookmarklet,Javascript,Bookmarklet,我有一个书签可以打开我的google日历页面(),还有一个bookmarklet可以在上面应用一些javascript: javascript:document.getElementById('gadgetcell').setAttribute('style','width:300px');document.getElementsByClassName('sn-frame')[0].setAttribute('style','width:300px') 有没有一种方法可以将它们组合成一个书签,这
谢谢大家! 否。bookmarklet在原始页面的上下文中运行,因此它无法更改页面并继续运行。如果您总是希望在页面上运行该代码,您可能会发现这很有帮助。或者,允许您将用户样式应用于页面。您可以使用扩展来获得相同的行为
例如,在Safari中,您将创建一个启动URL的按钮和一个运行bookmarklet的注入脚本。GreaseMonkey和许多其他扩展框架可以做类似的事情。我曾想过使用bookmarklet来实现这一点:
javascript:location.href='http://google.com';setTimeout(function(){alert('hi');},2000);
setTimeout函数可以是任何函数,由于有2秒的计时器,页面将有时间加载,并且任意代码将针对它执行。但它不起作用。无论我试图在setTimeout中调用什么函数,它都永远不会执行,或者可能在加载新页面时被破坏的其他空间中执行,或者类似的情况。setTimeout代码可以作为bookmarklet正常工作,只要没有location.href更改
然而,我想知道是否更好的方法是将您想要的页面加载到当前空间中,然后尝试执行一些操作。如果我开始尝试,我会在这里更新