我正在使用哈希来动态加载内容.为了使后退按钮工作,我正在捕获哈希变化.但是有时我需要更改散列而不触发散列更改功能(例如,当页面被重定向到服务器端时,我需要在内容返回后更新散列.)
我提出的最佳解决方案是取消绑定hashchange事件,进行更改然后重新绑定它.但是,由于这是异步发生的,我发现它重新绑定太快并仍然捕获哈希更改.
我目前的解决方案非常糟糕:在setTimeout中重新绑定.有没有人有更好的主意?
$(window).unbind( 'hashchange', hashChanged);
window.location.hash = "!" + url;
setTimeout(function(){
$(window).bind( 'hashchange', hashChanged);
}, 100);
Run Code Online (Sandbox Code Playgroud)
编辑:
Amir Raminfar的建议促使我找到一个不需要超时的解决方案.我添加了一个类变量
_ignoreHashChange = false;
Run Code Online (Sandbox Code Playgroud)
当我想静默更改哈希时,我这样做:
_ignoreHashChange = true;
window.location.hash = "!" + url;
Run Code Online (Sandbox Code Playgroud)
并且散列更改事件执行此操作:
function hashChanged(event){
if(_ignoreHashChange === false){
url = window.location.hash.slice(2);
fetchContent(url);
}
_ignoreHashChange = false;
}
Run Code Online (Sandbox Code Playgroud) 我有多个具有相同结构的数据库,有时会复制数据.为了保持数据完整性,我使用两列作为主键.一个是数据库ID,它链接到一个表,其中包含有关每个数据库的信息.另一个是表键.它不是唯一的,因为它可能有多个行,这个值相同,但在database_id列中有不同的值.
我打算将这两列放入一个联合主键.但是,我还想将表键设置为自动增量 - 但是基于database_id列.
EG,有了这些数据:
table_id database_id other_columns
1 1
2 1
3 1
1 2
2 2
Run Code Online (Sandbox Code Playgroud)
如果我要添加包含dabase_id为1的数据,那么我希望table_id自动设置为4.如果dabase_id输入为2,那么我希望table_id自动设置为3等.
在MySql中实现此目的的最佳方法是什么.
我写了一个jQuery插件,它接受一些参数的css颜色.
我想验证它们.如果它只是一个十六进制或rgb值,我可以用正则表达式做到这一点,但是如何在不膨胀插件的情况下验证所有147个有效颜色名称?
我想知道是否有某种方法尝试应用样式(可能使用jquery)然后如果它无效则从浏览器中捕获错误?
编辑:powtac和Pantelis提出了一个解决方案,但他们都错过了边缘情况,所以我在这里包括一个完整的解决方案:
var validateCssColour = function(colour){
var rgb = $('<div style="color:#28e32a">'); // Use a non standard dummy colour to ease checking for edge cases
var valid_rgb = "rgb(40, 227, 42)";
rgb.css("color", colour);
if(rgb.css('color') == valid_rgb && colour != ':#28e32a' && colour.replace(/ /g,"") != valid_rgb.replace(/ /g,""))
return false;
else
return true;
};
Run Code Online (Sandbox Code Playgroud) 这该怎么做?
var obj = {
func1 : function(){
// Do stuff
},
func2 : function(){
func1(); // does not work
this.func1(); // does not work
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:错过了分号
我正在尝试弄清楚如何使用 Github Actions 签出远程公共存储库,然后从当前存储库添加一些敏感文件,最后构建等。
我相信我可以使用以下命令查看远程仓库
steps:
- name: Checkout
uses: actions/checkout@v2
with:
repository: foo-user/bar-repo
Run Code Online (Sandbox Code Playgroud)
但是,如何将当前存储库中的文件中的一些文件复制到此已签出的存储库中?
如果我有以下内容:
<Route path="/" component={Containers.App}>
{ /* Routes that use layout 1 */ }
<IndexRoute component={Containers.Home}/>
<Route path="about" component={Containers.About}/>
<Route path="faq" component={Containers.Faq}/>
<Route path="etc" component={Containers.Etc}/>
{ /* Routes that use layout 2 */ }
<Route path="products" component={Containers.Products}/>
<Route path="gallery" component={Containers.Gallery}/>
</Route>
Run Code Online (Sandbox Code Playgroud)
我怎样才能使两组路线各自使用不同的布局.
如果我只有一个布局,那么我会把它放在App中,但在这种情况下,我在哪里定义布局?
为了使其更复杂,一些布局组件(例如顶部导航)在两种布局类型之间共享.
我需要能够删除附加到元素及其所有子元素的事件,即使我不知道这些事件是什么.所有事件都使用jquery附加.
鉴于以下内容:
render() {
const onMouseOver = (event) => {
this.setState({ isHovering: true });
};
const onMouseOut = (event) => {
this.setState({ isHovering: false });
};
const open = this.state.isHovering ? true : false;
return (
<Nav className={styles.TopNav} bsStyle="pills" activeKey={1}>
<NavDropdown
className={dropDownClasses}
eventKey={1}
open={open}
title="Cards"
id="nav-dropdown"
onMouseEnter={onMouseOver}
onMouseOut={onMouseOut}>
<MenuItem eventKey="1.1">Action</MenuItem>
<MenuItem eventKey="1.2">Another action</MenuItem>
</NavDropdown>
<NavItem className={styles.navLink} eventKey={2}>Blog</NavItem>
</Nav>
);
Run Code Online (Sandbox Code Playgroud)
当鼠标悬停在NavDropdown的子节点上时,如何防止onMouseOut触发.
我可以在onMouseOut中检测我是否超过了孩子吗?
如何使用jsdoc格式化嵌套数组和对象?
这是我最好的猜测:
an_obj = {
username1 : [
{
param1 : "value 1-1-1",
param2 : "value 1-1-2",
optional_nested : "1-1--2"
},
{
param1 : "value 1-2-1",
param2 : "value 1-2-2"
},
],
username2 : [
{
param1 : "value 2-1-1",
param2 : "value 2-1-2"
},
{
param1 : "value 2-2-1",
param2 : "value 2-2-2",
optional_nested : "2-2--2"
}
]
}
}
/**
* A function description.
* @param {Object} obj
* @param {Object} obj.username This is not the object name, …Run Code Online (Sandbox Code Playgroud) 从各种来源我收集到svg中的vector-effect ="non-scaling-stroke"应该适用于当前版本的Opera,Firefox和Chrome.(不确定IE10).
但是我只能在Opera和Firefox中使用它,然后只有当它作为图像直接嵌入时,如果它在CSS中被缩放为背景图像,那么它就不起作用.
我的问题:
为什么不镀铬?
为什么不在背景图片?
有没有一种标准方法可以在所有最新的浏览器中使用它?
HTML:
<div><img src="http://dl.dropbox.com/u/60476509/close.svg" /></div>
<div><img id="one" src="http://dl.dropbox.com/u/60476509/close.svg" /></div>
<div id="two"></div>
<div id="three"></div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#one {
width: 200px;
height: 200px;
}
#two {
background-image: url("http://dl.dropbox.com/u/60476509/close.svg");
height: 100px; /* native size */
width: 100px;
background-size: contain;
}
#three {
background-image: url("http://dl.dropbox.com/u/60476509/close.svg");
height: 200px;
width: 200px;
background-size: cover;
}
Run Code Online (Sandbox Code Playgroud)