我正在尝试编写一个小油脂猴脚本/书签/您对 Google Docs 有什么帮助。我想添加的功能需要一个 keypress/keyup/keydown 事件处理程序(这三个之一)。不幸的是,Javascript 不是我的强项,而且我似乎无法在编辑窗格中捕获 (?) 按键事件。作为最后的手段,我尝试了以下方法:
javascript:(function(){
els = document.getElementsByTagName("*");
for(i=0;i<els.length;i++){
els[i].onkeypress=function(){alert("hello!");};
els[i].onkeyup=function(){alert("hello2!");};
els[i].onkeydown=function(){alert("hello3!");};
}
})();
Run Code Online (Sandbox Code Playgroud)
但是,这仍然无法在编辑窗格中捕获按键 - 没有烦人的警报(尽管它似乎适用于大多数其他网站......)。我已经检查了 Chrome 和 Firefox(我不能让它在任何一个中工作)。
我在 Firebug 中尝试了“日志事件”(并通过 Firebug 的一个简洁的小扩展,Eventbug 检查了所有注册的事件);似乎这些事件不是在按键上触发的。
编辑:
为了澄清 [Tim],我制作了带有一些注释的屏幕截图...
我正在谈论的“编辑窗格”似乎是一堆显示我输入的内容的 Javascripted div。
有任何想法吗?谢谢!
由于打包,我想计算/总结一个目标文件的开销(理想情况下,让gcc最小化它).
例如,考虑以下结构(32位x86,gcc):
struct a {
uint8_t a_char;
uint32_t an_integer
uint8_t another_letter;
};
Run Code Online (Sandbox Code Playgroud)
虽然实际数据只占用6个字节,但该结构在内存中占用12个字节,因为两个字符后跟3个填充字节.通过重新排序结构如下:
struct b {
uint32_t an_integer
uint8_t a_char;
uint8_t another_letter;
};
Run Code Online (Sandbox Code Playgroud)
该结构只有sizeof(struct b)== 8(仍然是4字节的开销).
(1)理想情况下,我想gcc的重新排列struct a
,以struct b
救我的空间,但我的版本(4.2)似乎并没有任何优化级别做到这一点.
(2)或者,给定struct a
,我想(自动)获得数量6
(总开销量)或4
(最小量的开销,如果成员被"理想地"订购).这样做的目的是确定手动重新排序结构是否值得花时间(可能不是).
有没有办法让gcc做(1),是否有一个工具可以执行(2)?我能想到的最接近的事情是(1)#pragma pack(1)
,但是(我猜)通过使大部分/全部内存访问不对齐,它会产生严重的性能影响.对于(2),我认为解析调试符号的Perl脚本可能能够做到这一点,但我对DWARF不太熟悉,无法确切知道.
alignment ×1
bookmarklet ×1
c ×1
c++ ×1
gcc ×1
google-docs ×1
greasemonkey ×1
javascript ×1
packing ×1