小编wub*_*bbe的帖子

在以编程方式更改内容后,Chrome 中的输入元素无法正常撤消

在 Chrome 中,我注意到在以编程方式更改元素的内容后,对于输入元素,撤消无法正常工作。虽然我对不同的浏览器有不同的行为,但它们并不像 Chrome 那样糟糕。

FF20      good
IE9       some support (undo stack cleared when input loses focus)
Safari5   some support (undo stack cleared when input loses focus)
Chrome26  unreliable
Run Code Online (Sandbox Code Playgroud)

例如,修剪空格的脚本(另请参见下面的 jsfiddle)

  • 在“你好!”之前输入一些空格,
  • 在输入元素外单击
  • 单击输入元素并按 Ctrl-Z

现在文本不见了(在 Chome 中)

jsfiddle在这里

<input type="text" id="input1" value="hello!">

document.getElementById("input1").addEventListener('blur', function(evt){elementLosesFocus(evt, this);}, false);

function elementLosesFocus(evt, caller)
{
    caller.value = caller.value.trim();
}
Run Code Online (Sandbox Code Playgroud)

我认为我能希望的最好的事情是一种在失去焦点时以某种方式清除输入的撤消历史的方法(如 IE 和 Safari 的情况)。

google-chrome input undo undo-redo

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

为什么嵌套括号会在此正则表达式中导致空字符串?

为什么嵌套括号会在此正则表达式中导致空字符串?

var str = "ab((cd))ef";
var arr = str.split(/([\)\(])/);
console.log(arr); // ["ab", "(", "", "(", "cd", ")", "", ")", "ef"] 
Run Code Online (Sandbox Code Playgroud)

我想要实现的是这个

["ab", "(", "(", "cd", ")", ")", "ef"] 
Run Code Online (Sandbox Code Playgroud)

javascript regex parentheses

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

无需在javascript中转义innerHTML字符?

我不应该逃避"markup4"中的双引号吗?令我惊讶的是这个简单的作品.如果我用它没有的东西替换它们.

<script type="text/javascript">

    function test3(){
    document.getElementById('div21').innerHTML += '<div class = "markup4"><br>blablablabla1.<br><br></div><div class = "markup3"><br>blablabla2.<br><br></div>';
    }

</script>
Run Code Online (Sandbox Code Playgroud)

javascript escaping innerhtml

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

解释为什么2012年12月31日是第53周而不是第1周(ISO-8601)

我正在尝试在JavaScript中编写一个函数来返回给定日期的周数,并且我正在针对我在网络上找到的两个函数测试我的代码,即

http://techblog.procurios.nl/k/n618/news/view/33796/14863/calculate-iso-8601-week-and-year-in-javascript.html
http://www.epoch-calendar.com/support/getting_iso_week.html
Run Code Online (Sandbox Code Playgroud)

我从1970年1月1日开始测试了30,000天,我和第二个来源有一些不同.第一种差异是某些情况下该来源返回零周的情况,这显然是错误的.然后对于其他一些情况,它返回第53周,我的函数返回第1周.这些是日期

  • 1984年12月31日
  • 2012年12月31日
  • 2040年12月31日

他们都看起来像这样

Dec         Jan
29  30  31  01  02  03  04  05  06  07  08  09  10
Sa  Su  Mo  Tu  We  Th  Fr  Sa  Su  Mo  Tu  We  Th
        ^^                          ^^
Run Code Online (Sandbox Code Playgroud)

根据ISO-8601

  • 周从星期一开始
  • 一年中的第一周是该年第一个星期四的一周

1月3日是2013年的第一个星期四,因此1月3日是第1周(2013年)的一天.第1周(2013年)的开始是在星期四之前的星期一,即2012年12月31日.

因此,2012年12月31日必须是第1周.

然而...

  • 当我在Wolfram Alpha中键入"2012年12月31日的哪一周"时,它将返回第53周
  • 当我在excel中键入'= WEEKNUM("2012-12-31")'时,它也返回第53周

我错过了什么吗?困扰我的是,它只发生在如此少的日期(70年或更长时间内的3个日期)

javascript date week-number

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

如何在IE11中使用TextEncoder?

我正在尝试哈希一个字符串.但IE11和Safari中的函数TextEncoder的替代方案是什么?

var string = "foobar";

window.crypto.subtle.digest(

    { "name": "SHA-256" },

    new TextEncoder("utf-8").encode(string)).then(function (hash)
    {
        console.log(hex(hash)); // 'c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2'
    }
);

var string = "foobar";

var buffer = new TextEncoder("utf-8").encode(string); // Uint8Array (ArrayBuffer)
var string = new TextDecoder("utf-8").decode(buffer); // string

console.log("buffer", buffer);
console.log("string '" + string + "'");
Run Code Online (Sandbox Code Playgroud)

hex是我从mozilla获得的一个函数

https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest

javascript buffer window.crypto

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

如果我也可以更简单地做到这一点,Object.defineProperty的用途是什么?

Object.defineProperty有什么用?

var myObj = {someNum: 123};
Object.defineProperty(myObj, "anotherNum",
{value: 456, writable: true, enumerable: true, configurable: true});
alert(myObj.someNum + " " + myObj.anotherNum);
Run Code Online (Sandbox Code Playgroud)

......如果我也可以......

var myObj = {someNum: 321};
myObj.anotherNum = 654;
alert(myObj.someNum + " " + myObj.anotherNum);
Run Code Online (Sandbox Code Playgroud)

jsfiddle在这里

javascript defineproperty

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

"if(console.clear)"的内部如何评估为true?

我正在使用一些代码来跳过清除Safari中的控制台,因为Safari中没有定义此功能

if (console.clear) { console.clear() };
Run Code Online (Sandbox Code Playgroud)

但是"console.clear"如何评估为真?输出看起来不像真的.

console.log(console.clear);

// undefined                                Safari
// function()                               FF
// function clear() { [native code] }       Opera, Chrome, IE
Run Code Online (Sandbox Code Playgroud)

javascript console

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

这会阻止SQL注入吗?

以下代码是否更好地防止MySQL数据库上的SQL注入mysqli_real_escape_string

$str = "SELECT * FROM customers WHERE username = '; DELETE FROM customers WHERE 1 or username = '";
$str2 = "";

for($i = 0; $i < strlen($str); $i++)
{
    if (strpos ("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ,.?!0123456789", $str[$i], 0) !== FALSE)
    {
        $str2 = $str2 . $str[$i];
    }
}

echo "$str2";
Run Code Online (Sandbox Code Playgroud)

php mysql code-injection

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