小编Jon*_*alb的帖子

检测dragenter跨浏览器解决方案上的文件类型

我正在为此寻找跨浏览器解决方案.我提前告诉你,我不想知道是否只是一个文件,因为我找到了解决方案.我想知道文件基本上是音频,图像还是视频.在Chrome中,当您触发dragenter事件时,您可以从此处获取该数据:

ev.originalEvent.dataTransfer.items[0].type;
Run Code Online (Sandbox Code Playgroud)

但是在Firefox,Safari和IE中,"items"规范尚未应用:https: //developer.mozilla.org/en-US/docs/Web/API/DataTransfer/items

在这些浏览器中,您只能看到"files"属性:

ev.originalEvent.dataTransfer.files[0];
Run Code Online (Sandbox Code Playgroud)

但是dragenter files[0]是空的.我如何解决这个问题,以了解这些其他浏览器中的文件类型?

示例(仅适用于Chrome):

$(document).on('dragenter', '.drop-zone', function(ev) {
  var e = ev.originalEvent;
  e.dataTransfer.dropEffect = 'copy';
  var file = e.dataTransfer.items[0];
  var type = file.type.slice(0, file.type.indexOf('/'));
  $(ev.target).html(type);
});

$(document).on('dragleave', '.drop-zone', function(ev) {
  $(ev.target).html('Drag your file over here to know the type, no need to drop it');
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="drop-zone">Drag your file over here to know the type, no need to drop it</div>
Run Code Online (Sandbox Code Playgroud)

javascript html5 drag-and-drop cross-browser

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

可以导入所有容器组件中的所有动作创建器吗?

我知道我有一个索引文件,我用不同的视图导入不同的文件和动作创建者:

import generalActions from './generalActions'
import vftActions from './vftActions'
import shareActions from './shareActions'
import codeFormActions from './codeFormActions'
import signupActions from './signupActions'

const actions = {
    ...generalActions,
    ...vftActions,
    ...shareActions,
    ...codeFormActions,
    ...signupActions
}

export default actions
Run Code Online (Sandbox Code Playgroud)

然后我每次都使用所有操作导入动作索引:

import { connect } from 'react-redux'
import { bindActionCreators } from 'redux'
import actions from '../../redux/actions'

function mapDispatchToProps(dispatch) {
    return {
        actions: bindActionCreators(actions, dispatch)
    }
}

export default connect(null, mapDispatchToProps)(ContainerComponent)
Run Code Online (Sandbox Code Playgroud)

如果我在不同的导出中分离它并仅导入我的容器需要的动作创建器,那好吗?

此外,很有可能当我有很多动作创建者时,很难找到没有采取的名字.

您认为这是最好的方法吗?

javascript ecmascript-6 reactjs redux

7
推荐指数
1
解决办法
4330
查看次数

YouTube API v3过滤可嵌入视频

在YouTube的API v3文档资料,有喜欢的参数regionCodevideoEmbeddablevideoSyndicated。但是似乎它们都没有正常工作。我想从搜索结果中排除VEVO视频。因此,应该可以使用videoEmbeddable='true'参数。但是此参数对我的搜索结果没有影响。

使用API​​ v2,我可以通过添加参数来删除VEVO vidoes,format=5但此参数在v3中不可用。

有谁知道如何使用v3做到这一点?

youtube api youtube-api youtube-data-api

5
推荐指数
1
解决办法
2162
查看次数

如果连接到未更改的商店,则React componentDidUpdate方法将不会触发继承的props更改

我希望我的组件知道是否已加载某个库.要知道从任何上下文我将它连接到我的商店的"库"减少器到我的组件.我还this.props.dataObject从调用组件的父级传递了一个配置对象.像这样:

class GoogleButton extends Component {
    render() {
        if (this.props.libraries.google) {
            return <a id='sharePost' className='google_icon'></a>
        } else {
            return null
        }
    }

    componentDidUpdate() {
        gapi.interactivepost.render('sharePost', this.props.dataObject)
    }
}

function mapStateToProps(state) {
    return { libraries: state.libraries }
}

export default connect(mapStateToProps)(GoogleButton)
Run Code Online (Sandbox Code Playgroud)

处理库状态的reducer是这样的:

let newState = {...state}
newState[action.libraryName] = action.state
return newState 
Run Code Online (Sandbox Code Playgroud)

当我改变库状态componentDidUpdate工作.问题是当我改变父母继承的道具时this.props.dataObject.在这种情况下,componentDidUpdate不会触发.如果我connect从组件中删除它,它按预期工作.我在这里错过了一些东西?

javascript reactjs redux react-redux

4
推荐指数
2
解决办法
6027
查看次数

如何在静态块中获取特定商店视图的基本 url?

我知道在 .phtml 文件中您可以这样做,例如:

<?php echo $this->helper('derco_core')->getStoreUrl('dcmotosesp')?>
Run Code Online (Sandbox Code Playgroud)

我想在静态块内做同样的事情。提前致谢。

static-block magento

2
推荐指数
1
解决办法
2937
查看次数

对于随机顺序没有重复的数字

什么是最好的方式做一个随机的"为"而不重复任何数字?

for ($i = 1; $i <= 10; $i++) {
    echo $i;
}
Run Code Online (Sandbox Code Playgroud)

我认为有些方法但是代码很多很复杂..有一个标准的功能可以做我愿意做的事情吗?

php random for-loop

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

N和M位置之间的子节点有一个jQuery选择器?

假设我有一个元素列表,我想选择大于2的子项:eq(2)和小于6:eq(6).我知道如何选择grater而不是:gt()但我不知道如何在N和M位置之间进行选择.有一个选择器吗?

jquery jquery-selectors

0
推荐指数
1
解决办法
155
查看次数