3

我需要能够将 URL(从浏览器中的 url 栏)拖放到网页中,使用该链接向 Web 服务发出请求,并获取 JSON 回复并填充表单。

我已经能够创建处理链接的 Web 服务,并且我已经能够使用 jQuery.ajax 发出请求,但我不确定如何与删除的链接进行交互。

谁能给我举个例子?我应该使用什么?

编辑:

我已经能够使用“drop”触发我的 ajax 查询,但我不确定如何获取我已删除的 URL 的值。这是我的代码:

jQuery(function() {
$("input").bind("drop", function(e){
        var val = e.dataTransfer.getData('Text')
        $.ajax({
        type: 'GET',
        url: 'http://dev.null:8888/gud/',
        data: 'url=' + val,
        dataType: 'json',
        success: function(jsonData) {
          alert(jsonData);
        },
        error: function (xhr, ajaxOptions, thrownError){
          alert("this isnt working");
        },                              
      });
    });
  });

我认为这e.dataTransfer.getData('Text')可以让我访问 URL 的值,但事实并非如此。有谁知道我如何访问该值?

找到了。这是e.originalEvent.dataTransfer.getData('Text')

4

3 回答 3

1

有趣的问题。我相信这可能的;但是,我确实认为存在一些限制的可能性。

据我所知,大多数平台/浏览器在拖放文本内容(无论是原始文本、网址、“炸鱼和薯条”等)方面的行为都类似……文本到文本框中,文本框将填充该内容。因此,您可以指示您的用户将链接/文本放到特定的文本区域...

关于检测何时发生丢弃,我认为您将不得不依靠setInterval检查某个文本框的值/内容的方法来了解何时插入了有效的 URL。


* 现在关于限制 - 我不知道(我不知道)这个功能是否确实是通用的,但我相信这是所有“主要”浏览器的标准功能,它不涉及该平台。

*很想从一个更有学问的人那里得到一些确认。

于 2012-06-20T16:57:11.870 回答
1

使用 setInterval 概念改进 Lix 的解决方案:不要执行 setInterval,因为它会不断重复,而是添加一个带有单个超时的 drop listener,如下所示:

var $t=$('textarea');
$t.on('drop',(event)=>{
  setTimeout(()=>{alert(event.target.value);},0);
});
于 2019-04-25T07:19:28.520 回答
-3

我认为对于您的情况,您必须为浏览器创建一个插件或扩展程序。

一旦您将 url 放到浏览器地址元素中,页面就会被加载并且您的 JavaScript 将不会运行。

于 2012-06-20T16:53:39.667 回答