小编Vik*_*ukh的帖子

jQuery将元素传递给dataTransfer属性

尝试dataTransfer在拖放序列期间将jQuery对象传递给属性.将属性添加到jQuert.event.props数组后我可以分配它,但它在drop事件期间返回undefined .不知道我在这里缺少什么 - 看起来真的很简单.

使用Javascript:

function dragClip(clip, event){

    event.dataTransfer.el = clip;

    /* Console confirms event.dataTransfer.el is the jQuery object */
}

function dropClip(target, event){

    target.append(event.dataTransfer.el);

    /* event.dataTransfer.el no longer has the object... where'd it go?? */
}

jQuery.event.props.push('dataTransfer');

$('#titles')
    .bind('dragenter dragover', false)
    .bind('drop', function(event){

        dropClip($(this), event);
    });

$('.clip').bind('dragstart', function(event){

    dragClip($(this), event);
});
Run Code Online (Sandbox Code Playgroud)

更新:

重写以删除冗长.已经包含了其他东西,但匿名函数会做得很好:

jQuery.event.props.push('dataTransfer');

$('#titles')
    .bind('dragenter dragover', false)
    .bind('drop', function(event){

        $(this).append(event.dataTransfer.el);
    });

$('.clip').bind('dragstart', function(event){

    event.dataTransfer.el = $(this);
});
Run Code Online (Sandbox Code Playgroud)

UPDATE

根据@ barney的最终答案,我的最终工作代码.我注意到使用原始事件不允许我将对象作为数据传递,因此我应用了ID并在drop上重建了jQuery对象.通过摆脱声明的功能也收紧了一切.代码少,结果相同.

$('#titles')
    .bind('dragenter …
Run Code Online (Sandbox Code Playgroud)

jquery events drag-and-drop data-transfer object

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

Apollo useQuery 钩子不会使用 writeQuery() 方法从缓存中获取更新。没有看到错误

使用后useMutation(),缓存会更新,但useQuery()在 Home 组件中不会。

我尝试使用不同的fetchPolicy. 我可以在 Apollo 开发工具中看到新帖子,但需要更新页面才能看到更改

import { FETCH_POSTS_QUERY } from '../utils/graphql';

function Home() {
  const { user } = useContext(AuthContext);
  const {
    loading,
    data
  } = useQuery(FETCH_POSTS_QUERY, {
    fetchPolicy: 'cache-and-network',
  });
...

Run Code Online (Sandbox Code Playgroud)
import { useMutation } from '@apollo/react-hooks';

import { useForm } from '../utils/hooks';
import { FETCH_POSTS_QUERY } from '../utils/graphql';

function PostForm() {
  const { values, onChange, onSubmit } = useForm(createPostCallback, {
    body: ''
  });

  const [createPost, { error }] = useMutation(CREATE_POST_MUTATION, …
Run Code Online (Sandbox Code Playgroud)

javascript apollo reactjs graphql

6
推荐指数
2
解决办法
3049
查看次数

在 Chrome 扩展程序中使用 Chrome 文本转语音

现在,这是使用 Chrome 文本转语音引擎的Chrome 应用程序的演示。

而且,这是 我修改此应用程序以作为“扩展”而不是应用程序工作的源代码。但是,tts 似乎不可用。我已在清单文件的“权限”下添加了“tts” 。

{
  "manifest_version": 2,
  "name": "Text2Speech",
  "version": "1",
  "minimum_chrome_version": "23",
  "icons": {
    "16": "icon_16.png",
    "128": "icon_128.png"
  },
  "permissions": ["tts"],
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["js/jquery-1.7.2.min.js", "js/app.js"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

而且,这是我到目前为止的代码:

$(document).ready(function(){
  $(document).on("keypress", function(e) { 
    if ( e.shiftKey && ( e.keyCode === 108 || e.keyCode === 76) ) {
      console.log( "You pressed SHIFT + L" , $(prevElement).text());
      saySomething($(prevElement).text());
    }
  });
});
var prevElement = null;
document.addEventListener('mousemove',
  function(e){
      var …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome text-to-speech google-chrome-extension

4
推荐指数
1
解决办法
3027
查看次数