- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个简单的扩展,每次单击按钮时都会提醒鼠标单击(mouseup)坐标。 (一次学习尝试)
除了一个小故障外,扩展程序工作正常并且设置正确。
我的 XUL 文件:
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="chrome://global/skin/" ?>
<?xml-stylesheet type="text/css"
href="chrome://mouseclick/skin/mouseclick.css" ?>
<!DOCTYPE overlay SYSTEM
"chrome://mouseclick/locale/mouseclick.dtd">
<overlay id = "overlay-id" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript"
src="chrome://mouseclick/content/mouseclick.js" />
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="mouseclick-button" class="mouseclick-class"
label="&button.label;" tooltiptext="&tooltip.text;"
oncommand = "mouseClick.display();"/>
</toolbarpalette>
<toolbar id="nav-bar">
<toolbarbutton id="mouseclick-button" class="mouseclick-class"
label="&button.label;" tooltiptext="&tooltip.text;"
oncommand = "mouseClick.display();"/>
</toolbar>
</overlay>
我的 JS 文件:
if(mouseClick === undefined) {
var mouseClick = {
_x : "not yet clicked" ,
_y : "not yet clicked"
};
}
mouseClick.handler = function(e) {
var x = e.pageX !== undefined ? e.pageX : e.clientX;
var y = e.pageY !== undefined ? e.pageY : e.clientY;
/*A TEST ALERT
alert("(" + x + ", " + y + ")"); // a dummy command for testing
*/
this._x = x;
this._y = y;
};
mouseClick.display = function() {
alert("(" + this._x + ", " + this._y + ")");
};
window.addEventListener("mouseup", mouseClick.handler, false);
问题是,当我单击文档中的任何位置或窗口中除扩展按钮之外的任何位置时,TEST 警报 命令会提醒正确的坐标。
但是,当我单击按钮(再次触发警报命令)时,第一个测试警报返回正确的坐标。
但是,主要警报,警报(尚未点击,尚未点击)
。
为什么每次我单击扩展程序的按钮时,我的 mouseClick
对象都会重置?
最佳答案
Why is my mouseClick object getting reset everytime I click my extension's button?
它没有重置,它从未设置过。
<小时/>问题
在事件处理程序中,this
指的是 window
,而不是 mouseClick
。处理程序不会在对象的上下文中调用,因为您直接将其绑定(bind)到 window
。
意思是,在函数内部,this._x = x;
与window._x = x;
相同。 myClick._x
从未改变。
稍后,当您调用 mouseClick.display()
时,该函数内的 this
会引用 mouseClick
并会提醒初始值。
函数就像任何其他值一样。将其分配给对象的属性并不会神奇地将其绑定(bind)到该对象。 this
所指的内容是在调用函数时确定的,而不是在创建函数时确定的。
MDN explains this
very well和 quirksmode.org explains it in the light of event handlers .
解决方案
您可以使用 .bind
[MDN] 将处理程序显式绑定(bind)到 mouseClick
:
window.addEventListener("mouseup", mouseClick.handler.bind(mouseClick), false);
或者传递一个函数,该函数依次调用mouseClick.handler
:
window.addEventListener("mouseup", function(event) {
mouseClick.handler(event);
}, false);
关于javascript - 为什么每次我单击工具栏按钮时我的 Javascript 都会变得未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14162442/
两者有什么区别? v7-21 工具栏中没有的所有功能都包含在工具栏中吗?使用 v7-21 工具栏代替工具栏有哪些限制? 最佳答案 如果您查看 Toolbar 的文档和 AppCompat Toolba
如何使用 jQuery 进行可拖动的 Tinymce 工具栏? 最佳答案 在你的 tinyMCE init 方法中试试这个 tinyMCE.init({ // ... handle_event_cal
是否可以有一个多行的 ExtJsToolBar?我想要第一行的几个控件和第二行的 3 个 ExtJsButtons。 工具栏是面板的顶部工具栏。 最佳答案 不确定早期版本,但从 ExtJS 4.0 开
环境: iOS 6/7、Xcode 5 中的自动布局。 我知道要调整 NavBar 以适应状态栏,我将 NavBar 的背景图像设置为 64 位高(引用:WWDC 2013 Video Lecture
有没有办法获取整个 OS X 中使用的默认 NSButton 来导航窗口的内容?我所说的按钮显示在 Finder、系统偏好设置、Safari、Mac App Store、游戏中心等中。 虽然我可以使用
我没有使用 Windows 上 gvim 中的菜单和工具栏;我可以隐藏它们吗? 这将为文本区域提供更多空间。 最佳答案 使用guioptions设置(缩写为go)。 :set guioptions -
我使用 jQuery 为tinymce 创建了一个外部 float 工具栏。 tinyMCE.init({ ... theme_advanced_toolbar_location :
使用我的 TitleAreaDialog 是否可以在按钮下方的底部添加一个区域或一个栏。当操作发生时,可以向用户显示一条消息。 这是我所指的例子 最佳答案 据我所知,这对于 JFace Dialog
我已经创建了 JToolBar (Java Swing)。我在包含 JToolBar 的框架上设置了背景图像。我希望我的 JToolBar 是透明的,以便保持在框架上的图像应该是可见的。我正在使用 s
如何检查键盘何时完全显示以及何时像这样折叠?也许我可以检查它的高度? 我暂时检查了 notification 中的 userInfo,但没有发现对解决我的问题有用。 最佳答案 只需订阅通知: Noti
我想使用 jQuery UI 创建一个带标题的工具栏。 到目前为止,我有: HTML: go to beginning Submit CSS: #toolbar
这是我的 list 文件: 这是我的 Activity 布局: 这是我
如何去掉 android View 顶部的白框?我在我的代码中看不到我调用创建工具栏的东西的任何地方,我也没有自己编写代码。它也存在于 View 之上,而不是其中。我猜 xml 文件的设计 View
有人知道怎么做吗? 最佳答案 使用带有 alignParentBottom="true"的 LinearLayout 像这样: 我没有尝试编译,您可能需要修正一些拼写错误,但这是一个
我想以编程方式更改 Android 工具栏中导航图标(屏幕截图中的黑色圆圈)的高度和宽度。有什么办法吗?这不是工具栏 Logo 。我无法在 Styles xml 中更新工具栏主题,因为我希望它是动态的
我目前正在开发一个实现 Appcompat 工具栏的应用程序。现在我的问题是,如果我选择一个 Light Actionbar 作为基础,菜单是白色的,标题是黑色的。我希望两者都是白色的。如果我更改为
是否可以在工具栏中同时显示主页图标和返回图标?1)是否可以更改后退按钮图标和主页图标的显示顺序。目前它首先显示箭头按钮,然后显示 Logo (主页按钮) 2) 第二个要求是在单击主页图标时清除 Act
我想要一个双倍高度的操作栏(如 Material 指南示例中所示),但标题中(可能)有 2 行文本。我使用的标题是动态的,取决于页面中显示的项目。如果只有一行,它应该看起来像一个普通的操作栏,如果有
目前正在努力调整我的工具栏的布局。 我有两个按钮。一个左对齐,另一个右对齐。文本(应用程序标题)需要位于两个按钮的中央。 例子:[按钮 1] [文本] [按钮 2] 我的问题。文本未居中对齐。 它需要
我有一个包含 CardView 的 RecyclerView。 我想为每个 CardView 添加一个工具栏,使其看起来和行为都像主工具栏: [图标] [标题] ......... [按钮] [按钮]
我是一名优秀的程序员,十分优秀!