Javascript 创建bookmarklet
(问题改进) 你好,, 我想做一个书签。Bookmarklet将被覆盖,并将打开页面的右上角。你可以看到bookmarklet类型[here][1]我想制作叠加界面 以下是我的bookmarklet javascript代码:Javascript 创建bookmarklet,javascript,bookmarklet,Javascript,Bookmarklet,(问题改进) 你好,, 我想做一个书签。Bookmarklet将被覆盖,并将打开页面的右上角。你可以看到bookmarklet类型[here][1]我想制作叠加界面 以下是我的bookmarklet javascript代码: javascript:void((function(){var%20e=document.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('src','http
javascript:void((function(){var%20e=document.createElement('script');e.setAttribute('type','text/javascript');e.setAttribute('src','http://www.girmiyor.co.cc/bookmarklet.js');document.body.appendChild(e)})())
Bookmarklet将调用Bookmarklet.js文件。bookmarklet.js的内容:
document.body.innerHTML += "<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'></script>";
document.body.innerHTML += "<div class='result' style='background-color:grey;z-index:1000;position:absolute;right:0;top:0' width='300' height='250'></div>";
var site = location.href;
$.get("http://www.girmiyor.co.cc/c.php",{ q: site}, function(data){
$('.result').html(data);
});
document.body.innerHTML+=”;
document.body.innerHTML+=“”;
var site=location.href;
$.get(”http://www.girmiyor.co.cc/c.php“,{q:site},函数(数据){
$('.result').html(数据);
});
获取请求发送我可以通过Firebug看到它。但是什么也没有回来
你能帮我吗
当我直接在firefox的书签中添加此代码,然后单击Returna a page和[object XMLHttpRequest]
这是bookmarklet的一个常见问题。要修复此问题,请添加一个
void(0)
到bookmarklet代码的末尾。这样,bookmarklet就不会返回浏览器中显示的任何值。仔细查看您提到的friendfeed bookmarklet;它所做的只是创建并附加一个新的脚本标记,该标记保存一个带有“real”函数的js文件。
你提到的那篇文章也是如此。基本(相当自我解释)方法是:
e=document.createElement('script');
e.type='text/javascript';
e.src='http://domain.tld/file.js'; //optionally pass GET params
document.getElementsByTagName('head')[0].appendChild(e); //optionally, you could append to the <body>
因此,我建议您创建一个单独的js文件,其中包含用于构建覆盖的函数,并让您的bookmarklet加载该文件。当前版本的bookmarklet.js已损坏(在我编写此答案时),因为
var data=
之后缺少引号
显然,关于你的问题,我有几个未经检验的理论:
正文的innerHTML
。当脚本完成时,jQuery甚至还没有加载。您可能必须暂停脚本的执行并等待jQuery加载。尝试将$.get()
放入在窗口后调用的函数中。setTimeout()
,最好检查$
是否存在(使用类型($)!=“undefined”
),然后等待更多时间或运行$.get()
$.get
从HTTP获取内容
引用的type
属性设置为text/javascript
应该不是您的问题,但这样做肯定不会有什么坏处什么不起作用?它确实对我有用,但请注意,这种bookmarklet显然需要JQuery,而JQuery在您可能访问的每个页面上都不可用。它是如何工作的?当我直接在firefox的书签中添加这段代码,然后单击ReturnaPage和[objectXMLHttpRequest]@poke,.get方法JQUERY的方法。那么我应该为每个网页使用哪种方法呢?要么直接使用
XMLHttpRequest
(这是使用JQuery的get
时发生的情况),要么首先加载JQuery本身。javascript:site=location.href;$。get(“,{q:site},function(data){alert(data);void(0);?谢谢你,我正在寻找。但是,如果你在jquery中准备好了一个解决方案,我怎么能通过javascript(而不是jquery)将get请求发送到c.php文件呢?如果你在jquery中准备好了一个解决方案,只需以上面描述的相同方式包含jquery,否则我会阅读AJAX(XMLHttpRequest).就我个人而言,我还没有处理其他javascript请求的经验,但信息都在那里,谷歌it,说真的,你可以避免别人反复解释,也可以避免自己等待:)var site=location.href;
where should be quote?站点变量正在工作。该脚本在jquery已经加载的页面上也不起作用。当时的脚本不同。因为您使用的是FF,所以可以打开错误控制台(工具->错误控制台)你会看到关于$
未定义的投诉。这就是为什么我猜测是缺少type=“text/javascript”
、时间问题或不同的协议(HTTP与HTTPS)。添加了type=“text/javascript”,但仍然是相同的错误。我直接添加JQUERY代码(你可以在这里看到:),现在没有$is未定义错误,但仍然不起作用。
// Create the share dialog in the corner of the window
var container = div();
container.id = "ff__container";
container.style.position = "absolute";
container.style.top = scrollPos().y + "px";
container.style.right = "0";
container.style.width = "auto";
container.style.zIndex = 100000;