标签: bookmarklet

如何动态加载Javascript文件并立即使用它们?

我正在使用JQuery在网页的正文选项卡中动态注入脚本标记.我有类似的东西:

function addJS(url) {
  $("body").append('<script type="text/javascript" src='+url+'></script>'); 
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式添加了几个脚本,然后尝试使用它们.EG:

lib.js

function core() {...}
alert("I'am here !");
Run Code Online (Sandbox Code Playgroud)

init.js

addJS("lib.js");
c = new core();
Run Code Online (Sandbox Code Playgroud)

的test.html

<html>
  <head>
    <title>test</title>        
    <script type="text/javascript" src="init.js"></script> 
  </head>
  <body>
     Hello
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

加载test.html弹出"我在这里"然后最终出现错误"核心未定义".当然合并两个JS文件将使它们完美地工作.

我只是不明白o_O.

编辑

我简化了这个例子,但杰夫回答让我明白这是一个错误.所以这里有一些细节:

当重新加载时,init.js不在test.html的头部,因为我用一个书签上的代码注入了它.

所以真正的执行过程如下:

reload test.html>运行bookmarklet>插入jquery和init.js>插入lib.js

对困惑感到抱歉.

编辑2

现在我有我的问题的解决方案(这很快:-))但我仍然对我的问题的答案感兴趣.为什么会出错?

javascript bookmarklet

3
推荐指数
1
解决办法
1225
查看次数

使用bookmarklet进行数据传输的方法

我正在为服务构建一个bookmarklet.我需要从打开的窗口传输数据(URL,文本),但我不知道哪种方法最好.GET限制了数据量,并且由于跨域问题而无法实现ajax.

什么是最佳方式?

javascript bookmarklet

3
推荐指数
1
解决办法
1442
查看次数

在 Javascript 中捕获按键(Google 文档)

我正在尝试编写一个小油脂猴脚本/书签/您对 Google Docs 有什么帮助。我想添加的功能需要一个 keypress/keyup/keydown 事件处理程序(这三个之一)。不幸的是,Javascript 不是我的强项,而且我似乎无法在编辑窗格中捕获 (?) 按键事件。作为最后的手段,我尝试了以下方法:

javascript:(function(){
  els = document.getElementsByTagName("*");
  for(i=0;i<els.length;i++){
    els[i].onkeypress=function(){alert("hello!");};
    els[i].onkeyup=function(){alert("hello2!");};
    els[i].onkeydown=function(){alert("hello3!");};
  }
})();
Run Code Online (Sandbox Code Playgroud)

但是,这仍然无法在编辑窗格中捕获按键 - 没有烦人的警报(尽管它似乎适用于大多数其他网站......)。我已经检查了 Chrome 和 Firefox(我不能让它在任何一个中工作)。

我在 Firebug 中尝试了“日志事件”(并通过 Firebug 的一个简洁的小扩展,Eventbug 检查了所有注册的事件);似乎这些事件不是在按键上触发的。

编辑:
为了澄清 [Tim],我制作了带有一些注释的屏幕截图... 截屏

我正在谈论的“编辑窗格”似乎是一堆显示我输入的内容的 Javascripted div。

有任何想法吗?谢谢!

javascript greasemonkey bookmarklet google-docs

3
推荐指数
1
解决办法
3382
查看次数

将 designMode 开/关小书签组合成一个切换小书签

我希望将这 2 个小书签组合成 1 个小书签,以打开和关闭设计模式:

在:javascript:document.body.contentEditable='true';%20document.designMode='on';%20void%200

离开:javascript:document.body.contentEditable='false';%20document.designMode='off';%20void%200

我尝试了一些 if else 语句,但似乎无法检测 designMode 是否打开。所以不确定我做错了什么。任何帮助,将不胜感激。

javascript bookmarklet designmode contenteditable

3
推荐指数
1
解决办法
5774
查看次数

空白页上的书签

我编写了一个简单的书签,只需单击一下即可打开多个网页:

javascript:(function(){window.open("http://www.w3schools.com");window.open("http://www.google.com");window.open("http://www.yahoo.com");})();
Run Code Online (Sandbox Code Playgroud)

我不希望能够打开浏览器并立即单击此按钮,但除非页面已加载到窗口中,否则书签将无法工作。为了提高速度,我更喜欢将浏览器主页设置为“空白”。有没有办法让这个小书签在没有加载页面的情况下执行?

另外,如果确实加载了某些内容,我希望书签能够替换窗口中加载的任何页面。目前,它打开了 3 个新选项卡。我已经在第一个 window.open 上尝试了“name”属性的“_self”和“_parent”值,但它似乎不起作用。我可能没有正确格式化它。

任何帮助表示赞赏!谢谢!

javascript bookmarklet window.open

3
推荐指数
1
解决办法
2853
查看次数

Bookmarklet保存文件

可以在Firefox中使用书签直接保存/打开文件吗?

许多书签打开一个页面,人们可以在该页面上单击链接以下载结果.例如使用blob链接.是否可以避免这种额外的点击并直接调用"保存文件"/"打开文件"对话框?

firefox bookmarklet

3
推荐指数
1
解决办法
1347
查看次数

日期bookmarklet需要在单个数字的月份和日期前导零

我有一个用于检查每日日志文件的书签.但是,我使用的书签仅以一位数的形式提供月和日,但日志文件使用两位数.

例如我的书签提供: HTTP://url/log/2009-5-4_localcontrol-story.log,而日志文件实际上住在: HTTP://url/log/2009-05-04_localcontrol-story.log

以下是我目前的代码:

javascript:d=new%20Date();window.open("http://url/log/"+d.getFullYear()+"-"+(d.getMonth()+1)+"-"+(d.getDate())+"_localcontrol-story.log",%20"_self");

你能不能告诉我这个改编,所以我把我的月份和日期用2位数字表示,如果有必要,可以使用前导零?

javascript date bookmarklet

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

在Bookmarklet中使用jQuery UI

在CoffeeScript中,虽然此代码几乎与JavaScript相同:

tabs_html = "<div id='nm-container'><ul><li><a href='#tabs-1'>Guidelines</a></li><li><a href='#tabs-2'>Test</a></li></ul>
            <div id='tabs-1'><p>something1</p></div><div id='tabs-2'><p>something2</p></div></div>"
$("#nm-toolbar").append(tabs_html)
$("#nm-container").tabs()
Run Code Online (Sandbox Code Playgroud)

它不起作用.有趣的是,它在尝试最后一行时起作用:$("#nm-container").tabs()从控制台.我附上下面的完整代码.请注意,我正在使用CoffeeMarklet生成似乎仅适用于chrome的bookmarklet.

s1 = window.document.createElement('script')
s1.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'
window.document.body.appendChild(s1)

$ ->

    s2 = window.document.createElement('script')
    s2.src = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js'
    window.document.body.appendChild(s2)

    jqueryUIcss = window.document.createElement('link')
    jqueryUIcss.rel = 'stylesheet'
    jqueryUIcss.type = 'text/css'
    jqueryUIcss.href = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/themes/blitzer/jquery-ui.css'
    window.document.head.appendChild(jqueryUIcss)

    if $("#nm-toolbar").length == 0
        toolbar = "<div id='nm-toolbar'></div>"
        $("body").append(toolbar)
        $("#nm-toolbar").css({
            'background':               '#fafafa',
            'height':                   '500px',
            'width':                    '400px',
            'position':                 'fixed',
            'bottom':                   '0px',
            'right':                    '20px',
            'padding':                  '5px'
        })

        tabs_html = "<div id='nm-container'><ul><li><a href='#tabs-1'>Guidelines</a></li><li><a href='#tabs-2'>Test</a></li></ul>
            <div id='tabs-1'><p>something1</p></div><div id='tabs-2'><p>something2</p></div></div>" …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-ui bookmarklet coffeescript

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

Firefox Bookmarklet:将函数公开给全局命名空间

我正在制作一个中等复杂的Bookmarklet,它可以在Chrome中运行得很好,但我无法在Firefox中使用它.当我在Firefox中运行我的Bookmarklet时,它会重定向到仅true在其上显示的新页面.

我已经将原因缩小到一个非常具体的事情:当你将新函数暴露给全局命名空间时,Firefox似乎并不喜欢.

如果是这种情况,您可能对此有更多了解吗?这是否记录在任何地方,以便我可以了解更多信息?关于书签构建的细微差别的资源似乎很少,我找不到任何相关的东西.第二个问题是,是否有任何已知的解决方法.

对于一些例子(记住,测试它们只需将这些代码行复制到Firefox中的书签中.然后在任何页面上运行它们).

重定向书签

javascript:!function(){window.okay={test:function(){}}}();

我正在研究的项目

非重定向书签

javascript:!function(){window.okay={test:!0}}();

有什么想法吗?谢谢!

目前,我计划在Knockout中使用手动订阅来获得我需要的功能.不过,知道这个问题的答案仍然很好.

javascript firefox bookmarklet

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

Javascript bookmarklet在Firefox中输出'true'而不是执行脚本

我们正在运行一个快速的javascript函数来填写并保存表单,以便在工作流程中快速前进(用于测试目的).除了Firefox之外,它在所有浏览器中运行良好 - 并且仅在几个人的机器上运行.

javascript:!function(){$("#ruleDetailForm\\.authorizingStatutes").val("Test")}();
Run Code Online (Sandbox Code Playgroud)

脚本还有更多内容,但上面的示例会导致相同的问题.将它复制到URL栏或将其添加为书签都会导致显示"true"的空白页面而不是将"Test"复制到相关字段中.

相同的用户使用其他浏览器没有问题,其他人已经成功使用它在Firefox中工作.Firebug没有显示任何有用的东西,它们是最新版本的Firefox.

javascript firefox bookmarklet

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