我看到了在JavaScript中设置事件的两种主要方法:
直接在标记内添加事件,如下所示:
<a href="" onclick="doFoo()">do foo</a>
通过JavaScript设置它们,如下所示:
<a id="bar" href="">do bar</a>
并在该<script>部分内部<head>或外部JavaScript文件中添加一个事件,如果您正在使用prototypeJS:
Event.observe(window, 'load', function() {
$('bar').observe('click', doBar);
}
Run Code Online (Sandbox Code Playgroud)
我认为第一种方法更容易阅读和维护(因为JavaScript操作直接绑定到链接)但它不是那么干净(因为即使页面没有完全加载,用户也可以点击链接,这可能会导致JavaScript错误在某些情况下).
第二种方法更清晰(在页面完全加载时添加操作)但是更难以知道操作链接到标记.
哪种方法最好?
一个杀手的答案将完全赞赏!
我们使用fmt:setBundle从数据库加载资源包(我们扩展了ResourceBundle类来做到这一点).当我们修改数据库中的值时,我们必须重新加载Web服务器以在Web应用程序上显示新值.
有没有简单的方法来使用新值而无需重新启动Web服务器?
(我们不希望总是仰望从数据库的价值,但我们希望通过调用一个特殊的"管理员"的URL缓存失效,例如)
编辑:我们正在使用JDK 1.4,所以我更喜欢该版本的解决方案.:)
Internet Explorer 6似乎完全忽略了选择,选项或optgroup标签上的CSS类或规则.
有没有办法绕过这个限制(除了安装最新版本的IE)?
编辑:更确切地说,我正在尝试在这样的选项之间构建一个层次结构:
这是HTML片段:
<select name="hierarchicalList" multiple="multiple">
<option class="group niv0">Os developers</option>
<option class="group niv1">Linux</option>
<option class="user niv2">Linus Torvald</option>
<option class="user niv2">Alan Cox</option>
<option class="group niv1">Windows</option>
<option class="user niv2">Paul Allen</option>
<option class="user niv2">Bill Gates</option>
<option class="group niv1">Mac Os</option>
<option class="user niv2">Steve Wozniaz</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这里是CSS规则,在最近的浏览器(如FF3)上工作正常但在IE6上根本不工作:
select option {
line-height: 10px;
}
select option.group {
font-weight: bold;
background: url(path_to_group_icon.gif) no-repeat;
padding-left: 18px;
}
select option.user {
background: url(path_to_user_icon.gif) no-repeat;
padding-left: 18px;
}
select option.niv0 { margin-left: 0px; }
select option.niv1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试从ant文件运行XSLT转换.
我正在使用带有saxon 9解析器的XSLT 2.0样式表(支持XSLT 2.0).
问题是,似乎ant始终调用XSLT 1.0解析器.
这是我的蚂蚁文件:
<xslt style="stylesheet.xslt"
basedir="core/"
extension=".xml"
destdir="core/"
classpath="D:\\DevTools\\saxon\\bin\\saxon9.jar">
</xslt>
Run Code Online (Sandbox Code Playgroud)
如果我直接调用它(没有蚂蚁),它就可以了.
任何的想法 ?
当我启动"mvn install"命令时,maven有时会尝试下载已经下载的依赖项.这对SNAPSHOT来说是预期的,但为什么maven会为其他JAR做到这一点?
我知道我可以通过"-o"标志来避免这种行为,但我只是想知道原因是什么.
当由于错误(如语法错误)而无法由Karma运行测试时,Karma会抱怨这样的警告:
INFO [karma]: Karma v0.12.31 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
INFO [PhantomJS 1.9.8 (Linux)]: Connected on socket WT-AsaXZq4odkQe2DgZJ with id 10861626
WARN [web-server]: 404: /undefinedhttp%3A%2F%2Flocalhost%3A9876%2Fbase%2Ftests%2Funit%2Fjs%2Fspecs%2Fcore%2FDeviceSpec.js%3F1e346ab1ad6e6e9240be6a6d5effaaa8f0dd96d8/9/%22ReferenceError%3A%20Can't%20find%20variable%3A%20SYNTAXERROR%22
Run Code Online (Sandbox Code Playgroud)
非转义的最后一行是:"/ undefinedhttp://localhost:9876/base/tests/unit/js/specs/core/DeviceSpec.js?1e346ab1ad6e6e9240be6a6d5effaaa8f0dd96d8/9/"ReferenceError:找不到变量:SYNTAXERROR""
这是正确的,因为我在我的测试中的某处插入了SYNTAXERROR以用于该问题.
所以测试被忽略但是,由于其他测试都没问题,因此Karma返回测试已通过:
PhantomJS 1.9.8 (Linux): Executed 41 of 41 SUCCESS (0.354 secs / 0.016 secs)
? echo $?
0
Run Code Online (Sandbox Code Playgroud)
如果Karma无法执行所有测试,我希望Karma失败(我不认为有任何理由!).
我没有找到任何配置变量来这样做.
我找到了Karma打印上面警告的行,但我不明白为什么它被处理为404 ...
任何想法使Karma无法执行所有测试时失败?
我注意到 Internet Explorer 会在从 Internet 下载的文件中添加一个方括号中的数字(通常是 [1])。这会在下载 Excel 电子表格时产生一个大问题,因为方括号不是 Excel 工作表名称中的有效文件名字符。该问题是 IE 特有的,其他浏览器保留相同的文件名。
因此,例如,如果您在打开文件时自动刷新数据透视表,您将收到一条错误消息,指出名称“file[1].yourPivotTableName”无效。
这个问题有什么解决办法吗?
编辑:似乎无论HTTP 指令建议的文件名是什么,IE 在所有情况下都会添加 [1],这会导致问题!(因此,关于文件名的答案在这种情况下没有帮助)
编辑:我尝试了一些 VBA 代码,在文件打开时以另一个名称保存文件。但是,它不起作用(与以前相同的错误消息)。您认为有办法用 VBA 解决这个问题吗?
在我的Google App Engine应用程序中,我在我的模型中存储了一个自动更新的日期/时间,如下所示:
class MyModel(db.Model):
date = db.DateTimeProperty(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
但是,该日期/时间是服务器上的本地时间,根据它的时区.
那么,当我想在我的网页上显示它时,我如何根据客户时区格式化它?
另外,我怎么知道谷歌服务器在哪个时区?
在我的eclipse RCP 3.3应用程序中,我想根据当前编辑器脏标志启用或禁用"保存"工具栏按钮.
我正在尝试使用< enabledWhen >标签,但我无法使其正常工作.
这是plugin.xml中的代码部分:
<command
commandId="org.acme.command.save"
icon="icons/save.png"
id="org.acme.command.save"
style="push">
<enabledWhen>
<instanceof value="activeEditor"/>
<test property="dirty" value="true"/>
</enabledWhen>
</command>
Run Code Online (Sandbox Code Playgroud)
你知道这应该是怎么回事吗?
我正在构建一个应该定期刷新的状态页面.
所以,我在该<head>部分中进行了一次http-equiv刷新,以便每分钟刷新页面:
<meta http-equiv="Refresh" id="refresh" content="60"/>
Run Code Online (Sandbox Code Playgroud)
但是,对于支持JavaScript的浏览器,我想发送一个Ajax请求,检查页面是否应该刷新.所以,我想在JavaScript中禁用http-equiv刷新(因为它是Ajax,它将完成工作).
我尝试使用JavaScript/PrototypeJs删除标记,但这不起作用:
$('refresh').remove();
Run Code Online (Sandbox Code Playgroud)
似乎浏览器会跟踪该计时器并且不会处理该DOM更新.
任何的想法 ?
我想从我的ruby脚本执行OS命令,但我想从ruby变量中添加一个参数.
我知道可以使用这样的关键字系统:
#!/usr/bin/env ruby
directory = '/home/paulgreg/'
system 'ls ' + directory
Run Code Online (Sandbox Code Playgroud)
但这可能是通过使用"反引号或反引号语法"吗?(我的意思是通过使用语法:ls)
我想知道网络上有多少网页使用JavaScript,百分比.
我正在寻找的指标是具有<script type="text/javascript">标签的页面数量.我很确定有人(比如谷歌)对此进行了研究并公布了结果!
目标是了解JavaScript在Web环境中的普及程度.
javascript ×4
html ×3
java ×3
browser ×2
ant ×1
command-line ×1
css ×1
django ×1
download ×1
eclipse-rcp ×1
events ×1
excel ×1
karma-runner ×1
maven-2 ×1
oop ×1
python ×1
resources ×1
ruby ×1
saxon ×1
spring-roo ×1
timezone ×1
unit-testing ×1
vba ×1
xslt ×1