Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建bookmarklet_Javascript_Bookmarklet - Fatal编程技术网

Javascript 创建bookmarklet

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

(问题改进)

你好,, 我想做一个书签。Bookmarklet将被覆盖,并将打开页面的右上角。你可以看到bookmarklet类型[here][1]我想制作叠加界面

以下是我的bookmarklet javascript代码:

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()
  • 您正在通过HTTPS加载jQuery,因此浏览器策略可能会阻止
    $.get
    从HTTP获取内容
  • 将jQuery
    引用的
    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;