Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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_Javascript_Bookmarklet - Fatal编程技术网

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

加载页面并在单个书签中应用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') 有没有一种方法可以将它们组合成一个书签,这

我有一个书签可以打开我的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更改

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