【问题标题】:How to "Decompile" a Bookmarklet?如何“反编译”一个书签?
【发布时间】:2011-06-13 11:46:52
【问题描述】:

我们都知道书签只是一些 为我们做一些事情的可执行 javascript 代码 当我们根据它们的功能点击它们时 打算做...我的问题是:

例如,我有一个Bookmarklet,不知道是这样的:

javascript:void(window.open('http://www.pdfdownload.org/web2pdf/Default.aspx?left=0&right=0&top=0&bottom=0&page=0&cURL='+document.location.href));

据我了解,小书签代码(带有“&cURL=”)获取浏览器地址栏中的 URL,然后对其进行处理以获得结果。通过更改书签中的一些参数(如“Google 地图中的搜索选择”之一)和其他一些参数,可以通过选择来完成类似的操作。

我如何“反编译”一个小书签,以使其从表单中获取所需的数据(在本例中为 URL)?

例如,假设我想在网页中使用上面的书签来提供一个表单,让用户输入一个 URL,然后单击一个按钮来获取结果。

我见过其他从“?input=”获取 URL 的小书签,以及从“?url="

获取 URL 的其他小书签

如何将书签的功能传递给表单?

【问题讨论】:

  • 你想手动解构书签,还是自动生成表单?

标签: javascript html forms bookmarklet


【解决方案1】:

在书签中,使用prompt('Please enter a URL', 'default value') 代替变量实际上是最简单的。在当前网页显示表单比较麻烦。

如果您只需要一个用户输入的值,prompt() 是一种易于使用的替代方法,可以向用户询问更多信息。 (当然你也可以使用多个prompt() 调用,但这可能会导致用户混淆)

【讨论】:

  • @BalusC:感谢您的快速回答,那么,如何将“提示”应用于上面的小书签?如果小书签使用 "?input=" 或 "?url=" 提示将如何工作?我如何设法将它集成到这些书签中?
  • 我想你的意思是我。好吧,javascript:void(window.open('http://www.pdfdownload.org/web2pdf/Default.aspx?left=0&right=0&top=0&bottom=0&page=0&cURL='+prompt('Enter a URL')));
  • @akirk:是的,很抱歉这个错误......嗯......我试过你在上面放的东西,但它什么也没做。据我了解,如果我执行您在上面放置的代码,浏览器必须向我询问带有 Javascript 警报之类的 URL 否?那么,怎么了?
  • 如果我将其复制并粘贴到我的地址栏并按 Enter 键,我会收到提示。那么,再试一次?
  • 是的!有用!! (在这里感觉有点“辱骂”,还有一件事,嗯,二:可以做我上面提到的“形式的事情”吗?解决方法是什么?而且,例如,如果我想把它放进去一个网页我只需要添加一个指向书签功能的链接,对吗?我如何设法将书签“隐藏”给查看源代码的人?如何保护我的源代码?最后,如果Bookmarklet 使用 "?Curl=" "?input=" 或 "?url=" 我总是可以通过添加提示来工作:"+prompt('Enter a URL')));"对吗?
【解决方案2】:

试试这样的:

<form method="get" action="http://www.pdfdownload.org/web2pdf/Default.aspx">
<input type="hidden" name="left" value="0">
<input type="hidden" name="right" value="0">
<input type="hidden" name="top" value="0">
<input type="hidden" name="bottom" value="0">
<input type="hidden" name="page" value="0">
<input type="text" name="cURL">
<input type="submit">
</form>

【讨论】:

    【解决方案3】:

    也许你可以在你的书签中调用一个 javascript 文件:

    javascript:void((function(){var%20e=document.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('src','http://www.example.com/js.js');document.body.appendChild(e)})())
    

    然后你在 js.js

    上创建一个 iframe
    var site = location.href;
    document.body.innerHTML += "<div style='background-color:white;z-index:1000;position:fixed;right:0;top:0' width='300' height='250'><iframe src='http://www.example.com/bookmarklet.php?q=" + site + "' /></div>";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 2010-09-10
      • 2022-11-08
      • 2010-10-09
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多