我正在使用dojox.mobile.ScreenSizeAware进行平板电脑/手机定位。
当ScreenSizeAware处于平板电脑模式时,我想在我的应用中禁用一些按钮。
我检查了文档,并且有一个方法isPhone()用于识别当前的显示模式。但是,我无法弄清楚如何调用此方法。
以下是我的相关HTML标记:
<span data-dojo-type="dojox/mobile/ScreenSizeAware" id="sszaware"></span>
<div data-dojo-type="dojox/mobile/FixedSplitter" data-dojo-props='orientation:"H"' id="mainSplitter">
我试过跟随javascript代码,但它说对象/ HTMLDivElement没有方法isPhone:
alert(digit.byId('sszaware').isPhone()); //error
alert(digit.byId('mainSplitter').isPhone()); //error
alert(dojo.byId('sszaware').isPhone()); //error
alert(dojo.byId('mainSplitter').isPhone()); //error
我也尝试了以下内容,甚至出现错误:
require(["dojox/mobile/ScreenSizeAware"], function(sSzAw){
alert(sSzAw.isPhone()); //error
});
我已经订阅了以下主题,以便在模式更改时触发我的代码。但是,仅当显示模式从手机更改为平板电脑或反之亦然时,才会触发这些主题/事件。当网页刚刚在浏览器中加载时,它们不会在开始时触发。
require(["dojo"], function(dojo){
dojo.subscribe("/dojox/mobile/screenSize/tablet", function(dim){ //this works fine when orientation changes from phone to tablet mode
alert("Reorienting tablet");
showButtons(false);
});
dojo.subscribe("/dojox/mobile/screenSize/phone", function(dim){ //this works fine when orientation changes from tablet to phone mode
alert("Reorienting phone");
showButtons(true);
});
});
我做了很多搜索,但找不到关于ScreenSizeAware的程序化使用的示例。最终,我将通过stackoverflow专家来解决我的问题。
提前感谢您的回复。
答案 0 :(得分:0)
尝试使用dijit.byId
代替dijit/byId
。如果您使用的是AMD语法,那么它应该是
require(["dijit/registry"], function(registry) {
console.log(registry.byId("sszaware").isPhone());
});
但请注意dojox/mobile/ScreenSizeAware
模块被报告为实验。更改版本时,API可能会发生巨大变化。
答案 1 :(得分:0)
试试这个:
require(["dojo/ready", "dojox/mobile/ScreenSizeAware"], function(ready, ssa) {
ready(function(){
console.log("isPhone: " + ssa.getInstance().isPhone());
});
});
(例如,请参阅dojox / mobile / tests / test_ScreenSizeAware-demo-tag.html)。