标签: bookmarklet

如何在将bookmarklet拖动到工具栏时设置favicon /图标?

我已经自己制作了一个书签,它的功能很好,但是当添加到Opera或Firefox的工具栏中时,它只需要浏览器的默认书签图标(分别是地球仪和星形).我的网站有一个图标,窗口,标签甚至[网站]书签都使用我指定的图标.只是不是我的书签.

如何编写我的网站或书签,以便书签也获得图标?

我知道用户可以使用各种手动hackery技术来设置favicon,但这些都是不合需要的解决方案.

browser favicon icons bookmarklet

107
推荐指数
6
解决办法
3万
查看次数

从bookmarklet加载外部JS?

如何使用书签加载外部JavaScript文件?这将克服IE的URL长度限制,并通常保持清洁.

javascript load bookmarklet external

67
推荐指数
1
解决办法
2万
查看次数

添加仅javascript的书签,而不是URL

我认为我不能这样做的原因是因为它可能是一个巨大的安全漏洞,但是这里......

我希望在我的浏览器上有一个书签(最好是FF3),它只是一段javascript代码.它只会根据当前日期构造一个URL,然后在该URL上执行window.location =.

我知道我可以创建一个页面并将其保存在我的本地计算机上并且只是这样参考它,但我只是想知道你是否可以绕过这一步并且实际上书签的"位置"实际上只是javascript.我本可以发誓这是多年前可能发生的事情,但我现在找不到任何告诉我的方法.

javascript bookmarks bookmarklet

47
推荐指数
5
解决办法
6万
查看次数

JavaScript:在页面的所有元素上反转颜色

注意:我在我的问题中保留了最新版本的书签,效果很好,并且基于雅各布的答案.如果您正在寻找要使用的书签,请使用该书签.如果您只想要一些适用于Chrome的精彩内容,请参阅leosok的精彩答案.

我希望能够使用JavaScript书签反转页面上所有元素的颜色.我知道要反转颜色,你从255(xFF)中减去每个RGB十六进制值,但除此之外,我不确定如何继续.

我怎么能做到这一点?

使用jQuery是可以接受的,它只需要在Chrome上运行,但如果它在Firefox中有效则可以.

这是排除图像 - 背景,文本和链接颜色都应该被反转.基本上任何从CSS中获取颜色的东西.

更新 这是一个更新的书签,修复了嵌套元素问题,并将在很多不同的网站上工作(包括这个)

UPDATE2 添加了对透明度的一些支持,处理具有默认背景颜色rgba(0,0,0,0)的元素.现在更多的网站应该使用更新的网站.

javascript: (function ($) {
    function load_script(src, callback) {
        var s = document.createElement('script');
        s.src = src;
        s.onload = callback;
        document.getElementsByTagName('head')[0].appendChild(s);
    }

    function invertElement() {
        var colorProperties = ['color', 'background-color'];
        var color = null;
        for (var prop in colorProperties) {
            prop = colorProperties[prop];
            if (!$(this).css(prop)) continue;
            if ($(this).data(prop) != $(this).css(prop)) continue;

            if (($(this).css(prop) === 'rgba(0, 0, 0, 0)') || ($(this).css(prop) === 'transparent')) {
                if ($(this).is('body')) { …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-chrome bookmarklet

44
推荐指数
2
解决办法
4万
查看次数

如何从JavaScript中的URL中删除"http://"

我遇到了一个奇怪的情况.我正在编写一个JavaScript书签,允许用户轻松快速地点击并共享外部网站到我们的网站.它只是得到标题,页面URL,如果他们在页面上选择了任何文本,它也会抓取它.

问题是它由于某种原因无法与外部域一起使用,因此如果我们在内部使用它,我们最终会得到一个共享窗口,其URL格式如下:

http://internaldomain.com/sharetool.php?shareid=http://internaldomain.com/anotheroddpage.html&title= ....

这工作正常,但如果我们尝试使用外部域并最终得到如下格式的URL:

http://internaldomain.com/sharetool.php?shareid=http://externaldomain.com/coolpagetoshare.html&title= ...

然后我们在页面上出现Forbidden Error并且无法加载...如果我们手动删除http://外部域地址,它会再次加载.

所以..我认为解决这个问题的最佳解决方案是修改JavaScript书签以删除http它正在加载窗口.以下是我当前的bookmarklet的外观:

javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://internaldomain.com/sharetool.php',l=d.location,e=encodeURIComponent,u=f+'?u='+e(l.href)+
Run Code Online (Sandbox Code Playgroud)

如您所见,e(l.href)是传递URL的位置.

如何修改它以删除外部域http://

javascript regex bookmarklet

44
推荐指数
3
解决办法
6万
查看次数

将favicon添加到javascript Bookmarklet(使用window.open)

我有一个bookmarklet,它启动一个window.open javascript函数,用我的bookmarklet打开一个小窗口 - 一个用于在任何访问过的站点和我的服务器之间进行通信的外部功能.当书签工具栏添加到书签工具栏时,我想要显示一个图标.我意识到书签是javascript,没有域名绑定它所以要么难以实现这个目标.

我对这个问题的理解:

Favicons很容易理解,是HTML文档头部的链接.浏览器可以通过引用为实际网站添加书签.但是,正如您所看到的我的bookmarklet是在没有HTML的javascript启动代码中运行的,因此没有指向favicon的链接.我还没准备好放弃,但我觉得可以注射一些...

截至目前,bookmarklet启动代码如下所示:

当前脚本 - bookmarklet,没有favicon(注意所有代码都是使用换行符编写的 - 不适用于所有浏览器,通常是一行)

javascript:void(window.open(
        'http://mydomain.com/bookmarklet/form?u='
        +encodeURIComponent(location.href)+
        't='+encodeURIComponent(document.title),
        'test','status=0,toolbar=0,location=0,menubar=0,
         resizable=false,scrollbars=false,height=379,width=379'
        ));
Run Code Online (Sandbox Code Playgroud)

我在解决方案中找到的最接近的事情如下,但它没有打开一个新窗口 - 只需创建一个新的选项卡,其中html为页面:

工作图标,没有书签窗口

javascript:'<!DOCTYPE html>
    <html><head>
    <title>Hello World</title>
    <link rel="icon" type="image/png" href="http://www.tapper-ware.net/devel/js/JS.Bookmarklets/icons/next.png" />
    </head>
    <body>Hello World</body>
    </html>';
Run Code Online (Sandbox Code Playgroud)

我尝试了两者的组合,但似乎没有使用图标.我很想知道是否有人可以看到一种解决方法..我认为这可能是可能的,我只是不认为它已经设置正确,因为我一直在尝试.

我的两个混合 - 书签,但没有图标

javascript:'<!DOCTYPE html>
    <html><head>
    <title>Hello World</title>
    <link rel="icon" type="image/png" href="http://www.tapper-ware.net/devel/js/JS.Bookmarklets/icons/next.png" />
    </head><body>Hello World</body></html>';
    window.open('http://mydomain.com/bookmarklet/form?u='
    +encodeURIComponent(location.href)+
    '&t='+encodeURIComponent(document.title),
    'test',
    'status=0,toolbar=0,location=0,menubar=0,resizable=false,
     scrollbars=false,height=379,width=379').void(0);
Run Code Online (Sandbox Code Playgroud)

我做的是在触发window.open()之前使用html结构,这在新窗口中成功打开了我的书签,但没有出现书签图标的图标.


逻辑解决方案:

我对此的想法是让书签指向一个页面,该页面只是一个带有favicon链接和启动脚本的HTML文件<head>.但是,我不希望在一个带有空白HTML文件的新选项卡中打开,然后启动弹出窗口.解决方法..?


有一个类似的问题,但我似乎没有找到我正在寻找的答案:

如何在将bookmarklet拖动到工具栏时设置favicon /图标?

工作javascript favicon的来源(但没有书签):

http://www.tapper-ware.net/blog/?p=97

我对你目前的知识/想法感兴趣

javascript favicon bookmarklet

36
推荐指数
2
解决办法
1万
查看次数

Firefox或JavaScript,统计DOM

我确信这很简单,但我不知道该怎么做.我如何计算HTML页面中DOM元素的数量?我想在用户脚本或书签中这样做,但我不知道如何开始!

javascript firefox dom bookmarklet userscripts

23
推荐指数
1
解决办法
1万
查看次数

Bookmarklet等到Javascript加载完毕

我有一个bookmarklet加载jQuery和其他一些js库.

我如何能:

  • 等到我正在使用的javascript库可用/加载.如果我在加载完成之前尝试使用脚本,比如在加载之前使用带有jQuery的$ function,则抛出一个未定义的异常.
  • 确保我加载的书签不会被缓存(不使用服务器头,或者很明显,这是一个javascript文件:metatag)

有人知道动态添加的javascript onload是否可以在IE中运行?(与此帖相矛盾)

什么是最简单的解决方案,最清晰的解决这些问题?

javascript jquery bookmarklet

20
推荐指数
1
解决办法
6945
查看次数

将<input type = submit按钮的CSS样式恢复为其默认样式

我正在使用一个书签,将脚本标签插入当前网页.

此脚本中包含一些UI和" input type=submit...."标记.

网页A选择不input type=submit..标记" "标签,而网页B标注它们.

这导致书签基于底层页面的样式显示不同样式的提交按钮.

我希望提交按钮以默认方式在所有网页上以相同的方式设置样式.

一种解决方案是在我的脚本中为提交按钮设置C​​SS样式,使其在所有页面上以相同的方式显示.(这是我为所有其他标签所做的).

我的问题是:

  1. 如何设置提交按钮的CSS样式,使其以"默认方式"显示?
  2. 可以删除现有样式,如果是,那么按钮如何以"默认方式"显示?

换句话说,无论底层网页是否选择了样式,我如何才能以"默认方式"显示我的书签的UI中的提交按钮?

注意:"默认方式"是指未添加样式时显示提交按钮的方式.例如,http://www.google.com上的"Google搜索"或"我感觉很幸运"按钮.

css bookmarklet

18
推荐指数
3
解决办法
4万
查看次数

扩展和书签的内容安全策略

Github具有以下内容安全策略:

Content-Security-Policy:default-src*; script-src assets-cdn.github.com www.google-analytics.com collector-cdn.github.com; object-src assets-cdn.github.com; style-src'self''unsafe-inline''unsafe-eval'res assets-cdn.github.com; img-src'self'数据:assets-cdn.github.com identicons.github.com www.google-analytics.com collector.githubapp.com*.githubusercontent.com*.gravatar.com*.wp.com; media-src'un'; frame-src'self'render.githubusercontent.com www.youtube.com player.vimeo.com checkout.paypal.com; font-src assets-cdn.github.com; connect-src'self'ghconduit.com:25035 live.github.com uploads.github.com s3.amazonaws.com

我们可以使用Evernote或Pocket等服务的浏览器扩展来剪辑/检索网页内容.

在这个Github政策中,我没有看到Pocket或Evernote的任何引用.有人可以解释为什么Pocket扩展能够从Github检索内容,而Evernote扩展不是,有CSP错误)

CSP策略是否可以阻止加载bookmarklet应用程序或浏览器扩展应用程序(如剪辑器)?如果是这样,Pocket如何能够在任何内容上进行扩展工作?

我们的bookmarklets /扩展中有这个问题,我希望它们像Pocket扩展一样顺畅,但我真的不知道从哪里开始...谢谢


编辑:由于人们在评论中要求代码,我们的书签加载了这个javascript:

javascript: (function() {
    function loadScript(a, b) {
        var c = document.createElement('script');
        c.type = 'text/javascript';
        c.src = a;
        var d = document.getElementsByTagName('head')[0],
            done = false;
        c.onload = c.onreadystatechange = function() {
            if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {
                done …
Run Code Online (Sandbox Code Playgroud)

security bookmarklet browser-extension google-chrome-extension content-security-policy

18
推荐指数
1
解决办法
4168
查看次数