我正在为此寻找跨浏览器解决方案.我提前告诉你,我不想知道是否只是一个文件,因为我找到了解决方案.我想知道文件基本上是音频,图像还是视频.在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)
我知道我有一个索引文件,我用不同的视图导入不同的文件和动作创建者:
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)
如果我在不同的导出中分离它并仅导入我的容器需要的动作创建器,那好吗?
此外,很有可能当我有很多动作创建者时,很难找到没有采取的名字.
您认为这是最好的方法吗?
在YouTube的API v3文档资料,有喜欢的参数regionCode,videoEmbeddable,videoSyndicated。但是似乎它们都没有正常工作。我想从搜索结果中排除VEVO视频。因此,应该可以使用videoEmbeddable='true'参数。但是此参数对我的搜索结果没有影响。
使用API v2,我可以通过添加参数来删除VEVO vidoes,format=5但此参数在v3中不可用。
有谁知道如何使用v3做到这一点?
我希望我的组件知道是否已加载某个库.要知道从任何上下文我将它连接到我的商店的"库"减少器到我的组件.我还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从组件中删除它,它按预期工作.我在这里错过了一些东西?
我知道在 .phtml 文件中您可以这样做,例如:
<?php echo $this->helper('derco_core')->getStoreUrl('dcmotosesp')?>
Run Code Online (Sandbox Code Playgroud)
我想在静态块内做同样的事情。提前致谢。
什么是最好的方式做一个随机的"为"而不重复任何数字?
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
Run Code Online (Sandbox Code Playgroud)
我认为有些方法但是代码很多很复杂..有一个标准的功能可以做我愿意做的事情吗?
假设我有一个元素列表,我想选择大于2的子项:eq(2)和小于6:eq(6).我知道如何选择grater而不是:gt()但我不知道如何在N和M位置之间进行选择.有一个选择器吗?
javascript ×3
reactjs ×2
redux ×2
api ×1
ecmascript-6 ×1
for-loop ×1
html5 ×1
jquery ×1
magento ×1
php ×1
random ×1
react-redux ×1
static-block ×1
youtube ×1
youtube-api ×1