我的Phonegap/Cordova应用程序在iPhone 4/4S(640x960),HTC Desire HD(480x800),三星Galaxy Note等设备上看起来不错.
<meta name="viewport" content="user-scalable=no, initial-scale=0.75, maximum-scale=1, minimum-scale=0.75, width=device-width, height=device-height, target-densitydpi=device-dpi" />
Run Code Online (Sandbox Code Playgroud)
但它在三星Galaxy S4(1080x1920,5.0英寸~441 ppi像素密度)等超高分辨率设备上缩小太小,用户可能需要放大镜才能读取.
如何调整视口,使其在所有手机/平板电脑上看起来大小相同,而不管屏幕大小或像素密度如何?
我尝试将比例增加到1.5,它在S4上可读但是在低密度设备上一切都太大了.
任何的想法?
我过去一直在开发ASP.Net,直到最近才遇到移动项目.Jquery-Mobile似乎是一个完美的框架,所以我只是潜入它.
目前我正在使用ASP.Net方法将服务器控件放在页面上,然后使用jqm来增强这些控件,使它们看起来像移动设备.我实际上做回发来收集表单数据并在代码隐藏中处理它们.为了避免整页刷新,我不得不将它们与updatepanel混合使用.不知何故,我让他们工作,但内心深处,我觉得这不是正确的方式(或有效的方式).
为了让它们正确混合起来有太多的复杂性,所以我想也许我应该避免回发并在纯AJAX请求中做其他事情?
$.ajax({
type: 'POST',
url: "/GetName",
data: "{}",
contentType: "application/json; charset=utf-8"
})
.success(function (response) {
alert(response);
});
Run Code Online (Sandbox Code Playgroud)
代码隐藏:
[WebMethod ()]
public String GetName()
{ return "Jack"; }
Run Code Online (Sandbox Code Playgroud)
问题:
这是有效的,但这是使用jQuery-Mobile网站的更好方法,还是这只是另一个糟糕的例子?
对于这种情况,UpdatePanel和回发是一个坏主意吗?(我知道他们的工作)
如果首选AJAX,我该如何在pageload上填充下拉列表(非服务器控件)?发送一个AJAX请求来填充$(document).ready()上的下拉列表对我来说似乎很愚蠢
我正在寻找的是开发移动网站的经验法则,我不想太远离应该做的事情.非常感谢您的投入.谢谢.
我已经创建了一个jQuery UI按钮,并希望在mouseenter事件上添加一个"X"辅助图标,并删除mouseleave事件上的"X".听起来很容易.
$("#hover").button({
icons: {
primary: "ui-icon-tag"
}
}).hover(function (event) {
// hover in
$(this).button("option", "icons", { primary: "ui-icon-tag", secondary: "ui-icon-close" });
}, function (event) {
// hover out
$(this).button("option", "icons", { primary: "ui-icon-tag" });
});
Run Code Online (Sandbox Code Playgroud)
如果在按钮内移动鼠标光标,则会多次触发悬停事件.
它确实可以在Firefox中运行,但是IE和Chrome都失败了.
很难用文字来解释古怪的效果,但请在这里看到jsFiddle:
我的目标是在所有浏览器中实现一致的效果.谢谢=)
编辑***
现在我有一些线索,为什么在IE和Chrome中悬停被打破.将UI按钮悬停几次并检查Firebug中的按钮元素,结果证明html标签有缺陷的jQuery UI小部件.
<button id="hover" class="ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-button-text-icons" role="button">
<span class="ui-button-icon-primary ui-icon ui-icon-tag"/>
<span class="ui-button-text">Hover me!</span>
<span class="ui-button-icon-secondary ui-icon ui-icon-close"/>
</button>
<span class="ui-button-icon-primary ui-icon ui-icon-tag"/>
<span class="ui-button-text">Hover me!</span>
<span class="ui-button-icon-secondary ui-icon ui-icon-close"/>
</button>
Run Code Online (Sandbox Code Playgroud)
现在注意额外的SPAN和BUTTON结束标签?这种行为是jQuery UI的错误吗?
你可以在这里试试这个例子: …
这需要0.001秒来执行,它使用索引搜索
SELECT * FROM CUSTOMER WHERE ID IN (1008,1122)
Run Code Online (Sandbox Code Playgroud)
现在我有一个存储过程U_VIP,返回与示例一相同的ID(1008,1122),执行只需0.001秒
SELECT ID FROM U_VIP //returns (1008,1122)
Run Code Online (Sandbox Code Playgroud)
现在,当我将它们组合起来时,执行大约需要半秒钟,而不使用索引
SELECT * FROM CUSTOMER WHERE ID IN (SELECT ID FROM U_VIP)
Run Code Online (Sandbox Code Playgroud)
我已经简化了上面的例子,在实际应用中,性能受到更高幅度的影响.在这种情况下如何强制Firebird使用索引?
**使用Firebird 2.1
**编辑**
根据Mark的回答,使用JOIN确实可以缩短执行时间,因为它现在正在进行索引搜索.
SELECT CUSTOMER.*
FROM CUSTOMER
INNER JOIN U_VIP ON U_VIP.ID = CUSTOMER.ID
Run Code Online (Sandbox Code Playgroud)
这很好,但是,它为我引入了另一个问题,我将在下面的例子中尝试解释.
SELECT CUSTOMER.*
FROM CUSTOMER
WHERE (:AREAID = 0 OR ID IN (SELECT ID FROM U_VIP(:AREAID)))
Run Code Online (Sandbox Code Playgroud)
使用where子句,我可以根据是否有条件地应用过滤器:AREAID是否由用户提供.当我用连接替换where子句时,如何实现相同的目的?
就像是:
SELECT CUSTOMER.*
FROM CUSTOMER
{IF :AREAID > 0 THEN}
INNER JOIN (SELECT ID FROM U_VIP(:AREAID)) VIP ON VIP.ID …
Run Code Online (Sandbox Code Playgroud) 我想在另一个包装器内有一个动态高度 div,它总是填充父容器,并自动缩小其大小并显示垂直滚动条供用户在发生溢出时滚动。
下图是我所期待的:
目前,内容窗格只是溢出包装器并将页脚窗格推到视线之外。
在这里小提琴http://jsfiddle.net/WWcAz/1/
#wrapper{
padding: 10px;
vertical-align: middle;
background-color: cyan;
min-height: 100px;
height: 300px;
max-height: 300px;
}
#dynamic{
background-color: green;
overflow: auto;
overflow-x: hidden;
min-height: 40px;
}
Run Code Online (Sandbox Code Playgroud)
这可以用纯 CSS 实现吗?
(** 更新:) 我不想要任何带有我的包装器的滚动条,并且包装器必须是固定大小,希望这很清楚 - 谢谢:)
我正在使用MSDeploy.exe发布我的Web应用程序:
msdeploy.exe
-verb:sync
-source:package=mypackage.zip
-dest:auto,computerName=MyServer
-allowUntrusted
Run Code Online (Sandbox Code Playgroud)
这会将我的包同步到目标服务器,并在此过程中删除所有不需要的文件。有时资源(例如:MyResource.dll)被IIS工作进程锁定,并且不允许删除操作,因此部署失败并显示以下错误:
拒绝访问路径“ C:\ MyResource.dll”。
但是,如果我使用VisualStudio中的“发布”功能,则我的网站可以毫无问题地发布到服务器上。锁定的文件保留在该文件夹中,并且错误将被忽略。
我认为VS可能使用此开关:
-enableRule:DoNotDeleteRule
但是我对此不太确定。
我的问题:
我也尝试过PSEXEC:
psexec.exe -s \\ MyServer appcmd.exe停止apppool /apppool.name=MyAppPool
它在命令行中运行良好,但是当我将其放在脚本中进行构建自动化时,它返回错误:
The handle is invalid.
Couldn't access MyServer.
Run Code Online (Sandbox Code Playgroud)
(把我的头撞在墙上)
有时我看到有人用这个来调用小部件中的函数
this.myFunction.apply(this, arguments);
Run Code Online (Sandbox Code Playgroud)
而不是这个:
this.myFunction();
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)somefunction.apply(thisobj, argsarray)
上面调用函数somefunction,在函数范围内将其设置为thisobj,并将argsarray中的参数作为函数的参数传递.
但考虑到下面的情况,无论是直接调用函数还是使用.apply()都不一样?我已经看到一些教程偏爱.apply()方法,包括jQuery网站本身.http://jqueryui.com/demos/widget/
这是一个小部件'标准'还是还有其他我缺少的东西?
_create: function() {
var that = this;
this.myButton = $( "<button>", {
text: "My Button"
})
.appendTo( this.element )
.bind("click", function() {
// _bind would handle this check
if (that.options.disabled) {
return;
}
that.displayMessage.apply(that, arguments);
// Why not just call the following?
// that.displayMessage();
});
},
displayMessage: function() {
alert("Hey!");
}
Run Code Online (Sandbox Code Playgroud) 在jQuery Mobile listview中处理长列表的有效方法是什么?以1000个项目为例,一次显示1000个项目将有效地使其对用户无用.想象一下滚动如此长的列表.
我正在考虑为listview实现自定义分页,除了滚动我自己的分页解决方案之外,还有更好的方法吗?
**更新请使用下面的小提琴示例查看我的更新答案
我在.Net 4.0应用程序中创建了一个UserControl,现在我需要在另一个位于.Net 2.0环境的应用程序中使用UserControl.是否可以在.Net 2.0 App(VS 2005)中使用我的UserControl?