我有一个脚本可以检测我网站上的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) 今天我正在帮助同事调试一些代码,我注意到console.log()谷歌Chrome中有一个奇怪的行为:
如果您:
创建一个嵌套数组(例如,[[345,"test"]])
使用将数组记录到控制台console.log().
修改其中一个内部数组值,然后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)
在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. …
我理解这段代码.我们制作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)
有人可以解释第二个例子中发生的事情吗?
PostgreSQL有相同的MySQL 内存表吗?
这些MySQL内存表可以跨会话持久化(即,与会话结束时丢弃的临时表不同).我无法找到任何可以做同样事情的PostgreSQL.
我有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表达式来一次切换多列的输出?
我通过本机浏览器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中快速渲染的唯一选项.
我有一个需要存储服务器登录信息的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) 假设我有这个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.还有其他选择吗?
我的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
什么是等同于__declspec的D2语言(dllexport)
我有D2 DLL链接示例代码并运行.在dmd的错位名称空间以及标准的u-mangled"C"名称空间中导出函数就像一个魅力.但是我正在遇到关于在DLL和主exe程序之间共享(全局)int变量的未知问题......我已经使用depends22_x86检查了DLL符号表,同时我提出了使用导出的问题在Var的声明之前的指令,它没有出现在DLL的表中,而函数也是如此.可以使用Digital Mars dmd工具链导出Varibles在DLL中可见吗?
javascript ×5
postgresql ×4
jquery ×2
sql ×2
case ×1
console.log ×1
d ×1
dll ×1
dllexport ×1
firefox ×1
html ×1
mysql ×1
pdo ×1
pgp ×1
php ×1
security ×1
temp-tables ×1
variables ×1