我认为这个问题的答案几乎肯定是"不",因为我已经做了一些测试和周围进行搜索,但没有任何窍门,以检测是否window.print()甚至可能从一个工作页面内(即,从JavaScript)?我知道,即使在桌面/笔记本电脑上,也不可能知道系统上是否配置了打印机,但至少浏览器会打开一个打印对话框.
我的Android手机有一个window.print()功能,但它(不出所料)没有做任何事情.
我再一次问,所以在SO上有一个关于这个主题的好问题:-)
如何测试我的javascript代码中的变量是否已初始化?
此测试应返回false
var foo;
Run Code Online (Sandbox Code Playgroud)
并且是真实的
var foo = 5;
Run Code Online (Sandbox Code Playgroud) 当我尝试在我的Google Wave小工具中调用wave.getState()时,我返回null(没有状态对象).如何初始化Wave状态对象?我在Wave Sandbox工作.
我的ModulePrefs包含以下内容:
<Require feature="wave" />
<Require feature="rpc"/>
Run Code Online (Sandbox Code Playgroud)
我在搜索修复程序时从一些谷歌小组发布了"rpc"功能,但它似乎没有任何帮助.
小工具包含一个jQuery插件,它定义了我使用的类(未显示),将事件处理程序附加到以编辑模式显示的链接,并使用google wave小工具初始化程序设置回调方法:
$.fn.extend({
$.gork.InitPass.newButtonClick = function newButtonClick() {
var jer = new $.gork.InitPass.Player('Jeremias', 12, 2);
var delta = {};
delta[jer.name] = jer.serialize();
wave.getState().submitDelta(delta);
};
$.gork.InitPass.modeCallback = function modeCallback() {
var state = wave.getState();
var mode = wave.getMode();
$.gork.InitPass.getContainer().ipCombatState(state, (mode == wave.Mode.EDIT));
};
$.gork.InitPass.stateCallback = function stateCallback() {
$.gork.InitPass.getContainer().ipCombatState(
wave.getState(), (wave.getMode() == wave.Mode.EDIT));
alert('state');
};
$.gork.InitPass.init = function init() {
if (wave && wave.isInWaveContainer()) {
var mode = wave.getMode();
$('.gork-ip-container').ipCombatState(null, (mode …Run Code Online (Sandbox Code Playgroud) 奇怪的问题.我有一个简单的webform,用户可以在其中填写文本并选中/取消选中一些复选框.当在IE(7或8)中将其打印为pdf或纸张(或打印预览)时,复选框将保持不变.例如,用户设置一个支票,打印未选中...或者用未经检查的预先选中的复选框打印.
收音机也一样.
只有当我完全删除DocType时,IE才能正确打印.但我需要使用XHTML-strict.
这是一个在IE中失败的简单示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="nl" xml:lang="nl-NL">
<body>
<input type='checkbox' name='y'/><br/>
<input type='radio' name='x'/><br/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
不适用于我测试的任何doctype(loose或html4).
任何人都知道如何解决这个问题?
非常感谢,迈克尔
当我调用这个自定义函数时
$.fn.inputBoxHelper = function () {
var args = arguments[0] || {};
var matchingElem = $.grep(this, function (e) { return $(e).val() == $(e).attr('title'); });
$(matchingElem).addClass(args.className);
this.bind({
focus: function(){
if ($(this).val().trim() == $(this).attr('title')) { $(this).val(emptyString).removeClass('gray'); }
},
blur: function(){
if ($(this).val().trim() == emptyString) { $(this).val($(this).attr('title')).addClass('gray'); }
}
});
return this;
}
Run Code Online (Sandbox Code Playgroud)
像这样
$('input:text').inputBoxHelper({ className: 'gray' });
Run Code Online (Sandbox Code Playgroud)
当我打电话给它时,它给了我错误
$("input:text,input:checkbox").inputBoxHelper is not a function
file:///D:/repository/scripts/script_tests/test.js
Line 20
Run Code Online (Sandbox Code Playgroud)
即使我将功能更改为just
$.fn.inputBoxHelper = function () {return this;}
Run Code Online (Sandbox Code Playgroud)
它做了同样的事情.它似乎运行正常并且正常工作,因为所有功能都在输入框上工作,但是会出错.有人有主意吗?
我在Flash中创建了这个图片"half pie":http://www.elperiodico.com/es/elecciones-28n/
现在我将它移植到JavaScript:http://especiales.elperiodico.com/LABS/ELEC2011B/html/ EMI-basic2.htm
我希望JavaScript"半派"从左到右使用相同的动画作为Flash版本,但不能这样做.
有人会这么善意帮忙吗?
与".trigger()"不同,jQuery".triggerHandler()"机制仅对jQuery对象所引用的第一个元素进行操作.换一种说法,
$('.all-over-the-page').triggerHandler("readjust");
Run Code Online (Sandbox Code Playgroud)
只会使用类"all-over-the-page"为第一个元素调用"readjust"处理程序,即使页面上有许多元素也是如此.另一方面,".turigger()"方法会影响所有这些方法.
我意识到我可以使用".each()"来解决这个问题(或者只是编写我自己的替代品来为我做这件事),但是在这方面两者有何不同之处有一些理由吗?这对我来说没什么意义.(我当然明白,现在几乎肯定无法改变.)
编辑澄清:
如果我提供一个我实际得到的代码风格的上下文,可能更容易理解为什么我会对此嗤之以鼻.当我在页面上为各种"小部件"功能组合代码时,通常涉及事件处理程序.一个很好的例子是某种形式,它有一些字段,其相关性由复选框,单选按钮或选择器控制.一个常见的例子是"送货地址"复选框,显示在数十亿电子商务网站上:如果选中该复选框,则会禁用送货地址并使用帐单邮寄地址.
现在考虑一些其他代码可能由于其自身原因而完全独立于checkbox-control小部件,实际上对表单执行的操作可能包括以编程方式更新复选框设置.在这种情况下,其他窗口小部件代码可能希望使用"triggerHandler()"来告诉任何窗口小部件,"嘿,我已经更新了一些内容,因此您可能需要重新检查当前状态并在必要时进行调整."
因此,如果".triggerHandler()"将对所有选定的元素进行操作,我可以使用:
$theForm.find('input, select, textarea').triggerHandler('change');
Run Code Online (Sandbox Code Playgroud)
所有这些处理程序都可以运行并执行他们需要的任何操作.正如我所说,写起来很容易:
$theForm.find('input, select, textarea').each(function() {
$(this).triggerHandler('change');
});
Run Code Online (Sandbox Code Playgroud) 我阅读了有关摘要认证的所有帖子,我正在尝试,但我有任何问题,我有一个实施摘要认证的restlet,并与javascript api我正在尝试进行身份验证.
首先,我对服务器执行xmlhttprequest POST(从file://到localhost:8111,因此我遇到了CORS问题但是已经解决了),以及服务器响应401和WWW-Authenticate标头:
WWW-Authenticate:Digest realm="Guard", domain="/", nonce="MTMzOTA5Mjk1NTE2NDo0NzY2NjJiOTgyMjE1ZDc0OWU3NzM5MTkzMWNjNGQzNw==", algorithm=MD5, qop="auth"
Run Code Online (Sandbox Code Playgroud)
所以我采用这个标题并应用身份验证摘要算法:首先创建2个变量,"cnonce"和"nc":
tokensObj["cnonce"] = 'bd5fd9b093dccaa1'; (invented)
tokensObj["nc"] = '00000001';
Run Code Online (Sandbox Code Playgroud)
我在我的文字对象中创建'uri'参数(在服务器响应中有一个"域":?)我取'domain'的值并放入我的对象的'uri'键.
之后,我做了算法:
var HA1 = MD5("login:Guard:mypassword");
var HA2 = MD5("POST:/");
var authResponse = MD5(HA1 + ':' +
unquotes(tokensObj["nonce"]) +
':' +
tokensObj["nc"] +
':' +
tokensObj["cnonce"] +
':' +
unquotes(tokensObj["qop"]) +
':' +
HA2);
var responseContentHeader = 'Digest username:"login"' +', realm=' + tokensObj["realm"] +
', nonce=' + tokensObj["nonce"] +
', uri=' + tokensObj["domain"] +
', algorithm=' + tokensObj["algorithm"] +
', response="' + …Run Code Online (Sandbox Code Playgroud) 我正在将一些传统的Pascal转换为JavaScript.我需要多个两个32位有符号整数.
在下面的示例循环中,一些乘法将导致溢出并将给出负数.这是故意的.我需要在与遗留系统匹配的末尾重现相同的最终数字x.
如何在JavaScript中实现此目的以获得相同的结果?
以下是一些示例代码:
var x = new Number(some value); // I need this to be a 32-bit signed integer
var y = new Number(some value); // I need this to be a 32-bit signed integer
for (var i=0; i<100; i++) {
x = x * y;
}
return x;
Run Code Online (Sandbox Code Playgroud) 普遍接受的答案是,你不能.然而,越来越多的证据表明,基于读取非基本HTML类型的数据类型的项目的存在,情况并非如此.执行此操作的一些项目是ProtoBuf和Smokescreen的JavaScript版本.
Smokescreen是一个用JS编写的flash解释器,所以如果不能直接得到字节,这些项目是如何解决的?Smokescreen的来源可以在这里找到.我已经看了一遍,但现在JS不是我的主要语言,解决方案让我望而却步.
javascript ×8
jquery ×4
printing ×2
animation ×1
browser ×1
byte ×1
bytecode ×1
checkbox ×1
digest ×1
getstate ×1
google-wave ×1
highcharts ×1
modernizr ×1
null ×1