小编Ell*_* B.的帖子

隐秘的"脚本错误".在Chrome和Firefox的Javascript中报告

我有一个脚本可以检测我网站上的Javascript错误,并将它们发送到我的后端进行报告.它报告遇到的第一个错误,假设的行号和时间.

编辑包含doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
Run Code Online (Sandbox Code Playgroud)

...

<script type="text/javascript">
//<![CDATA[
// for debugging javascript!
(function(window){
    window.onerror = function(msg, url, ln) {
        //transform errors
        if (typeof(msg) === 'object' && msg.srcElement && msg.target) {
            if(msg.srcElement == '[object HTMLScriptElement]' && msg.target == '[object HTMLScriptElement]'){
                msg = 'Error loading script';
            }else{
                msg = 'Event Error - target:' + msg.target + ' srcElement:' + msg.srcElement;
            }
        }

        msg = msg.toString();

        //ignore errors
        if(msg.indexOf("Location.toString") > -1){
            return; …
Run Code Online (Sandbox Code Playgroud)

javascript error-handling firefox google-chrome

196
推荐指数
4
解决办法
7万
查看次数

Google Chrome console.log()与对象和数组不一致

今天我正在帮助同事调试一些代码,我注意到console.log()谷歌Chrome中有一个奇怪的行为:

如果您:

  1. 创建一个嵌套数组(例如,[[345,"test"]])

  2. 使用将数组记录到控制台console.log().

  3. 修改其中一个内部数组值,然后console.log()输出后面的值 - 而不是console.log()执行时数组的值.

JavaScript:

var test = [[2345235345,"test"]]
console.log(test);
test[0][0] = 1111111;
// outputs: [[1111111,"test"]]

var testb = {};
testb.test = "test";
console.log(testb);
testb.test = "sdfgsdfg";
// outputs: {"testb":"test"}


var testc = ["test","test2"];
console.log(testc);
testc[0] = "sdxfsdf";
// outputs: ["test","test2"]
Run Code Online (Sandbox Code Playgroud)

JSFiddle示例

在Firefox中不会发生此行为.

另外需要注意的是,如果我在Chrome调试器中逐行浏览他的代码,那么console.log()会输出正确的值.

这个奇怪的现象是否有解释,还是仅仅是Google Chrome的错误?

编辑:

我已经缩小了重现不一致console.log()行为的步骤:

如果您将此脚本添加到您的页面:

var greetings=['hi','bye'];
console.log(greetings);
setTimeout(function(){
    greetings.push('goodbye');
},3000);
Run Code Online (Sandbox Code Playgroud)

并在Chrome 控制台窗口已打开的情况下在新窗口中打开它,然后console.log()输出将与在控制台窗口关闭时加载页面的输出不同.这是一个证明这一点的JSFiddle. …

javascript google-chrome google-chrome-devtools console.log

45
推荐指数
2
解决办法
9047
查看次数

console.log()在值实际更改之前显示变量的更改值

我理解这段代码.我们制作A的副本并将其称为C.当A被更改时,C保持不变

var A = 1;
var C = A;
console.log(C); // 1
A++;
console.log(C); // 1
Run Code Online (Sandbox Code Playgroud)

但是当A是阵列时,我们会有不同的情况.C不仅会改变,而且会在我们触及A之前发生变化

var A = [2, 1];
var C = A;
console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
Run Code Online (Sandbox Code Playgroud)

有人可以解释第二个例子中发生的事情吗?

javascript variables google-chrome

43
推荐指数
4
解决办法
3万
查看次数

PostgreSQL相当于MySQL内存表?

PostgreSQL有相同的MySQL 内存表吗?

这些MySQL内存表可以跨会话持久化(即,与会话结束时丢弃的临时表不同).我无法找到任何可以做同样事情的PostgreSQL.

mysql postgresql temp-tables

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

在PostgreSQL中使用CASE一次影响多个列

我有SELECT这些表达式的Postgres 语句:

,CASE WHEN (rtp.team_id = rtp.sub_team_id)
 THEN 'testing'
 ELSE TRIM(rtd2.team_name)
 END AS testing_testing
,CASE WHEN (rtp.team_id = rtp.sub_team_id)
 THEN 'test example'
 ELSE TRIM(rtd2.normal_data)
 END AS test_response
,CASE WHEN (rtp.team_id = rtp.sub_team_id)
 THEN 'test example #2'
 ELSE TRIM(rtd2.normal_data_2)
 END AS another_example
Run Code Online (Sandbox Code Playgroud)

在我的特定查询中有5个字段,其输出取决于是否rtp.team_id = rtp.sub_team_id计算为true.我CASE一遍又一遍地重复具有相同条件的陈述.

有没有什么方法可以组合这些CASE表达式来一次切换多列的输出?

sql postgresql case

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

将本机浏览器事件对象转换为jQuery事件对象

我通过本机浏览器onclick属性为元素分配一个事件处理函数:

document.getElementById('elmtid').onclick = function(event) { anotherFunction(event) };
Run Code Online (Sandbox Code Playgroud)

当我进入时anotherFunction(event),我希望能够像使用jQuery中通过该.on()方法获得的事件对象一样使用事件对象.我想这样做是因为jQuery事件对象具有诸如的属性和方法.pageX,.pageY并且.stopPropagation()可以在所有浏览器中使用.

所以我的问题是,在我将本机浏览器事件对象传入之后anotherFunction(),如何将其转换为jQuery事件?我试过了$(event),但没办法.

这里最明显的问题是:你为什么不只是使用jQuery .on,.bind,.click等来分配你的事件处理函数?答案:我正在构建一个页面,其中有一个巨大的表格,上面有很多可点击的东西.不幸的是,这个项目要求页面必须在IE6和IE7中快速渲染..on在IE6和IE7中使用et等会很快造成DOM泄漏并耗尽内存(使用Drip测试自己:http://outofhanwell.com/ieleak/index.php? title = Main_Page).设置onclick行为.onclick是我必须在IE6和IE7中快速渲染的唯一选项.

javascript jquery internet-explorer

24
推荐指数
3
解决办法
9378
查看次数

存储/检索PGP私钥和密码的安全方法?

我有一个需要存储服务器登录信息的Web应用程序.我正在使用2048位PGP公钥来加密插入的密码(请参阅参考资料insertServerDef)和带密码的私钥来解密密码(请参阅参考资料getServerDef).

据我所知,这个链中最薄弱的环节是处理私钥和密码.从下面的代码中我可以看到,我只是file_get_contents用来从当前web目录中的文件中检索密钥和密码 - 不好.

我的问题是:安全检索私钥和密码用于解密登录信息的好方法是什么?也许我应该通过经过身份验证的远程文件服务器存储/检索私钥?

我搜索过最佳实践,但却找不到多少.

class DB {

    protected $_config;
    protected $_iUserId;
    protected $_iServerId;
    protected $_dbConn;
    protected $_sPubKey;
    protected $_sPrivKey;


    public function __construct($iUserId, $iServerId) {

        //bring the global config array into local scope
        global $config;
        $this->_config = $config;

        $this->_iUserId = $iUserId;
        $this->_iServerId = $iServerId;

        $this->_sPubKey = file_get_contents("public_key");
        $this->_sPrivKey = file_get_contents("private_key");
        $this->_sPrivKeyPass = trim(file_get_contents("private_key_pass"));

    }

    //connect to the database
    public function connect() {
        try {


            $this->_dbConn = new PDO("pgsql:host=".$this->_config['db_host']." dbname=".$this->_config['db_name'],$this->_config['db_username'],$this->_config['db_password']);

            echo "PDO connection object …
Run Code Online (Sandbox Code Playgroud)

php security postgresql pdo pgp

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

jQuery选择器,用于查找与选择器匹配的给定元素之后的第一个元素

假设我有这个HTML:

 <textarea>blah</textarea>
 <br>
 <div class="select_this">hello!</div>
Run Code Online (Sandbox Code Playgroud)

当我已经识别出textarea时,如何选择带有"select_this"类的DIV?我不想在整个文档上使用类选择器,因为我正在使用大型文档,并且在旧版浏览器中类查找速度很慢.

jQuery .next()似乎没有做到这一点,nearest()只查找DOM树,而.nextUntil()限定了我需要的一切,除了"select_this"div.还有其他选择吗?

html javascript jquery

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

SQL - 使用CASE语句更新,我是否需要多次重复相同的CASE?

我的UPDATE语句如下:

UPDATE  customer
SET  forenames=ot.forenames,
     surname =

CASE WHEN ot.safeplace IS NULL
THEN 'test SAFEPLACE IS NULL'
ELSE 'test Safeplace IS NOT NULL'
END,

     middlename =

CASE WHEN ot.safeplace IS NULL
THEN 'test2 SAFEPLACE IS NULL'
ELSE 'test2 Safeplace IS NOT NULL'
END,

FROM    order_transaction ot

WHERE   customer.custid = ot.custid
AND ot.trans_orderid = 5678
AND customer.custid = 1234
Run Code Online (Sandbox Code Playgroud)

以上工作.它基本上检查另一个表中的字段是否为NULL,然后相应地更新客户的"姓"和"中间名".如您所见,我重复了两次相同的CASE语句.我的问题是 - 有一种方法可以只指定一次CASE语句吗?

关键是,如果我想根据某个条件更新10个字段,我是否需要包含10个类似的CASE条件?或者可以改进SQL以在WHEN/ELSE子句中只有一个CASE和10个字段更新?

(我使用的是Postgresql 8.2数据库,但我相信上面是标准的SQL).

非常感谢,Rishi

sql postgresql

10
推荐指数
2
解决办法
3万
查看次数

如何在使用dmd编译D2语言时从DLL导出变量?

什么是等同于__declspec的D2语言(dllexport)

我有D2 DLL链接示例代码并运行.在dmd的错位名称空间以及标准的u-mangled"C"名称空间中导出函数就像一个魅力.但是我正在遇到关于在DLL和主exe程序之间共享(全局)int变量的未知问题......我已经使用depends22_x86检查了DLL符号表,同时我提出了使用导出的问题在Var的声明之前的指令,它没有出现在DLL的表中,而函数也是如此.可以使用Digital Mars dmd工具链导出Varibles在DLL中可见吗?

dll d dllexport

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