标签: bookmarklet

JavaScript小书签和URL编码

完全透露我不知道Javascript,我试图得到这个Javascript:

javascript:location = 'http://validator.w3.org/check?uri=' +escape(location)&doctype=Inline&charset=detect+automatically&ss=1&group=0&user-agent=W3C_Validator/1.654';
Run Code Online (Sandbox Code Playgroud)

作为Bookmarklet工作,以发送此格式的URL:

http://validator.w3.org/check?uri=http://www.wordpress.org&charset=%28detect+automatically%29&doctype=Inline&ss=1&group=0&user-agent=W3C_Validator%2F1.654
Run Code Online (Sandbox Code Playgroud)

到W3C的指挥官.

我是用这个编码器对Javascript进行URL编码的,但当然,我做错了,无论是在我的Javascript中还是在编码过程中.

任何人都有一些关于Javascript bookmarklet和URL编码的特别或一般的想法?谢谢.

javascript url encoding bookmarklet

5
推荐指数
1
解决办法
2492
查看次数

基于 window.location.href 的条件 URL 附加或重定向的 Javascript

我正在尝试制作一个书签,单击该书签时将检查当前选项卡/窗口的 URL,以查看它是否包含“char1”和/或“char2”(给定字符)。如果两个字符都存在,它将重定向到另一个 URL,对于另外两个字符,它将分别附加当前 URL。

我相信一定有一种比下面的更优雅的方式来说明这一点(到目前为止对我来说效果很好),但我对 Javascript 不太了解。我的(笨拙且重复的)工作代码(抱歉):

if (window.location.href.indexOf('char1') != -1 &&
    window.location.href.indexOf('char2') != -1)
{
    window.location="https://website.com/";
}
else if (window.location.href.indexOf('char1') != -1)
{
    window.location.assign(window.location.href += 'append1');
}
else if (window.location.href.indexOf('char2') != -1)
{
    window.location.assign(window.location.href += 'append2');
}
Run Code Online (Sandbox Code Playgroud)

完全符合我的需要,但是,嗯……至少可以说不太优雅。

有没有更简单的方法来做到这一点,也许使用变量或伪对象?或者更好的代码?

javascript url bookmarklet append conditional-statements

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

为图像添加边框

我是JS的新手.我试图让我成为一个书签,在网页上找到所有图像并为它们添加彩色边框.然后,通过单击图像我想附加图像路径.这是我到目前为止所得到的:

javascript:
for (var i= document.links.length; i-->0;) {
    if (document.links[i].getElementsByTagName('img').length!=0) {
        document.links[i].onclick= function() {
           window.open("http://www.example.com/whatever?imgsrc=" + this.src + "");
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

如何为图像添加边框?

谢谢,鲍勃

javascript image bookmarklet

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

Javascript Bookmarklet 获取当前 URL

如何使用可在小书签中使用的 JavaScript 代码获取当前 URL?此代码不起作用:

javascript:copy(window.location.href);
Run Code Online (Sandbox Code Playgroud)

它需要将其复制到剪贴板。我需要支持 Firefox、Chrome 和 IE

javascript url clipboard copy bookmarklet

5
推荐指数
2
解决办法
8323
查看次数

如何将 URL 编码为 CakePHP 参数

我想创建一个用于添加书签的书签。因此,您只需单击Bookmark this Page书签中的JavaScript 代码段,您就会被重定向到该页面。

这是我当前的书签:

"javascript: location.href='http://…/bookmarks/add/'+encodeURIComponent(document.URL);"
Run Code Online (Sandbox Code Playgroud)

当我在 Bookmarklet 页面上单击它时,这会给我一个这样的 URL:

http://localhost/~mu/cakemarks/bookmarks/add/http%3A%2F%2Flocalhost%2F~mu%2Fcakemarks%2Fpages%2Fbookmarklet
Run Code Online (Sandbox Code Playgroud)

但是服务器不喜欢这样:

The requested URL /~mu/cakemarks/bookmarks/add/http://localhost/~mu/cakemarks/pages/bookmarklet was not found on this server.
Run Code Online (Sandbox Code Playgroud)

这给出了所需的结果,但对我的用例来说毫无用处:

http://localhost/~mu/cakemarks/bookmarks/add/test-string
Run Code Online (Sandbox Code Playgroud)

正在进行 CakePHP 典型的 mod_rewrite,它应该将最后一部分转换为我的BookmarksController::add($url = null)操作的参数。

我究竟做错了什么?

javascript php cakephp bookmarklet url-rewriting

5
推荐指数
1
解决办法
2468
查看次数

如果在设定的时间范围内没有检测到活动,Javascript 书签/iFrame 会自动刷新加载的页面?

我有一个我在工作中使用的基于浏览器的应用程序(实际上所有公司应用程序现在都基于浏览器,原因很明显),它的会话超时时间很短。我不确定会话超时的确切设置,但大约是 5-10 分钟。

不可避免地,每当我必须使用它时,会话已超时,我将信息输入应用程序,提交它,然后页面加载一个全新的会话,而没有实际传递任何信息 - 我得到的只是一个新的会议。然后我必须重新输入信息并再次提交,以便让它真正提取我想要的内容。当然,我可以先刷新页面然后输入信息,但我不知道会话是否超时,有时它运行得很慢,所以这是浪费时间。我们的开发团队无法预见这样的小事不仅令人讨厌,但当你考虑到浪费的时间(我为一家非常大的公司工作)只是等待被炸毁的东西重新加载,然后如果预刷新时不得不重新输入提交的信息时,最终也会花费我们很多钱被遗忘了,因为它通常发生在我之外。在某个时候,我希望成为程序员和我们的客户服务机构之间的联络人。

无论如何,我离题了。

我想要做的是:我想创建一个 Javascript 书签或其他东西,如果在特定时间范围内未检测到活动,它将自动刷新它碰巧所在的任何页面。与我最终确定会话超时是什么相比,这个时间范围有点短。基本上,如果在那段时间内没有活动,我只想让页面每隔五分钟重新加载一次。(我不希望它突然刷新,因为在我使用应用程序的过程中时间已经到了,它应该进行自动刷新的唯一时间是应用程序页面一直处于空闲状态)

这可以用 Javascript 书签完成吗?我应该编写一个页面“包装器”,在 iFrame 或类似的东西中加载应用程序页面?我使用的应用程序站点有许多子页面,如果发生自动刷新超时,我希望它刷新我当时碰巧所在的任何页面。当然,如果这是不可能的,我会接受它只是重新加载主站点页面,如果这不容易实现,因为如果我离开应用程序的时间足够长以至于超时发生,那么我可能不需要仍然在我当时所在的任何帐户/页面上。

希望我已经很好地解释了自己。逻辑很简单 -if no activity detected withing x amount of time, refresh the current page是它的要点。

谢谢我的 StackOverflow 兄弟们,再次感谢您的帮助。

-Sootah


由于我无法影响页面本身的编码,因此我必须尽可能使用最简单的解决方案。一个对上次刷新/页面加载进行计时然后在达到超时时刷新同一页面的书签将是完美的。

如果这是不可能的,那么如果我可以编写一个简单的页面,我可以从本地计算机运行该页面,该页面可以通过将页面加载到框架或其他可接受的内容来执行相同的功能。


EDIT 10/3/11 7:25am MST
Run Code Online (Sandbox Code Playgroud)

由于我在坟墓工作并且工作时间安排很奇怪(不幸的是,这个网站被封锁在那里,因为它被认为是一个“论坛”——我在金融界工作,他们对信息泄露过于谨慎)在我授予赏金之前,有一个这些事件检测器中的一个检测页面上次加载的时间/?像 document.onload 之类的东西。我认为从上次加载页面时设置计时器将是最简单和最有效的方法。我的鼠标可能会移到浏览器上,因为我在处理其他事情时无意中打开了网站,如果计时器因此重置而我实际上没有以页面加载/重新加载的方式与网站进行交互,则会话超时。

javascript iframe bookmarklet session-state session-timeout

5
推荐指数
1
解决办法
4695
查看次数

如何使用JavaScript在IE 6 7 8 9中分离事件

这是部分代码,而不是完整版.

我有一个突出显示特定html元素的荧光笔mouse hovers.

我也有click event and listener.

我的问题是:highlighter event/listener使用Internet Explorerv6 v7 v8 v9 时不会分离

我究竟做错了什么?

这是我如何附加事件并启动事件监听器:

if (document.body.addEventListener) {
                        //alert(11);
                        document.body.addEventListener('mousemove', handler, false);
                    } else if (document.body.attachEvent) {
                        //alert(12);
                        var ff=function(e) {
                            return handler(e || window.event);
                        };
                        //alert(ff);
                        document.body.attachEvent('onmousemove', ff);
                    } else {
                        //alert(13);
                        document.body.onmousemove = handler;
                    }
Run Code Online (Sandbox Code Playgroud)

这就是我停止onmousemove/mouse事件/监听器的方法:

if (document.body.removeEventListener) {
                    document.body.removeEventListener('mousemove', handler, false);
                } else if (document.body.detachEvent) {
                    document.body.detachEvent('onmousemove', function(e) {
                        return handler(e || window.event);
                    });
                } else {
                    document.body.removeAttribute("onmousemove"); …
Run Code Online (Sandbox Code Playgroud)

javascript bookmarklet javascript-events

5
推荐指数
1
解决办法
9260
查看次数

用于在 Google 电子表格中保存 URL 的书签

我想创建一个简单的书签,它获取当前网页“location.ref”的 URL 并将其保存在 Google 电子表格中。保存后,我想留在当前网页上。

我所知道的写入 Google 电子表格的唯一方法是使用 Google App Script。所以我写了一个简单的脚本来做到这一点:

function doGet(request) {
  var ss = SpreadsheetApp.openByUrl( "https://docs.google.com/spreadsheet/ccc?key=<MY-SPREADSHEET-ID>");

 var sheet = ss.getSheets()[0];
 var headers = ["Timestamp", "url"];

 var nextRow = sheet.getLastRow(); 
 var cell = sheet.getRange('a1');
 var col = 0;
 for (i in headers){
    if (headers[i] == "Timestamp"){
       val = new Date();
    } else {
       val = request.parameter[headers[i]]; 
    }
    cell.offset(nextRow, col).setValue(val);
    col++;
 }



   return ContentService.createTextOutput(request.parameter.url)
   .setMimeType(ContentService.MimeType.TEXT);
}
Run Code Online (Sandbox Code Playgroud)

我将其发布为 webapp。我写了书签:

<a href="javascript:(

   function(){ 
     alert(window.open('https://script.google.com/macros/s/<MYWEBAPP>/exec?url='+encodeURIComponent(location.href), '_self')); 

   }

  )();"> 

BOOKMARK

</a>
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。当我单击书签时,它实际上可以工作,它会抓取当前网页的 URL …

post bookmarklet google-apps-script

5
推荐指数
1
解决办法
1700
查看次数

在书签中使用本地存储

我非常喜欢使用带有小脚本的书签。

例如,我在 Reddit 上编辑了这篇文章中的注释编辑脚本,以通过本地存储自动保存和加载最后一条注释。

...

window.addEventListener("load", function () {
    div.innerHTML = localStorage.getItem("note");
}, false);
document.body.addEventListener("keyup", debounce(function () {
     localStorage.setItem("note", div.innerHTML);
}, 760));
...
Run Code Online (Sandbox Code Playgroud)

如果我将 html 文档作为存储在硬盘上的实际 html 文档打开,它运行得很好。但是,当我使用在代码(缩小)版本中粘贴的 URL 栏运行它时data: text/html, ...,出现NS_ERROR_NOT_AVAILABLE:错误。这是有道理的,因为本地存储是域绑定的。

有没有办法让本地存储与书签一起使用?

完整的注释代码可在此处找到,请注意,如果您将其保存在本地硬盘上,则此代码将起作用。因此,您可以为其添加书签并根据需要使用它。

html javascript bookmarklet

5
推荐指数
1
解决办法
2605
查看次数

是否有 JavaScript 可以删除 Youtube 播放列表中的重复视频?

由于YouTube 在其界面上不再使用remove duplicates按钮(大约在同一时间,他们不再使用非聚合物界面),因此用户在删除播放列表中的重复数据时不知所措。我到处寻找工具来做到这一点,但无济于事。我发现这个脚本可以从播放列表中删除所有视频,并且想知道是否可以修改它(由比我更了解 javascript 的人)以仅删除重复的视频:

setInterval(function () {
  document.querySelector('#primary button[aria-label="Action menu"]').click();
  var things = document.evaluate(
    '//span[contains(text(),"Remove from")]',
    document,
    null,
    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
    null
  );
  for (var i = 0; i < things.snapshotLength; i++) {
    things.snapshotItem(i).click();
  }
}, 1000);
Run Code Online (Sandbox Code Playgroud)

javascript youtube bookmarklet playlist

5
推荐指数
1
解决办法
5355
查看次数