dojox.mobile.ScreenSizeAware如何检查目前是平板电脑还是手机模式?

时间:2013-10-11 02:40:44

标签: html5 dojo dojox.mobile

我正在使用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专家来解决我的问题。

提前感谢您的回复。

2 个答案:

答案 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)。