好吧,这似乎是不可能的.我有一个文本框和一个选择框.我希望它们的宽度完全相同,因此它们在左边距和右边距上排列.
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
</select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
那就是你想的,对吗?不.Firefox中的选择框缩短了6个像素.见截图.
好吧,让我们编辑代码并制作两种样式.
<style type="text/css">
input {
width: 200px;
}
select {
width: 206px;
}
</style>
Run Code Online (Sandbox Code Playgroud)
好的,有效!
哦等等,在Chrome中更好的测试......
有人能告诉我如何在所有浏览器中排列这些内容吗?为什么我不能只做宽度:200px,为什么所有的浏览器都以不同的方式显示它?另外,当我们处理它时,为什么文本框和选择框的高度不同?我们如何让它们达到同样的高度?尝试过高度和线高并没有用.
好的,我已经从下面的答案中找到了解决方案.关键是使用box-sizing:border-box属性,以便在指定包含边框和填充的宽度时使用.见这里优秀的解释.然后浏览器无法填充它.
代码如下,还将框的高度设置为相同的大小,并缩小框内的文本,使其对齐.你还需要设置边框,因为Chrome有一个非常奇怪的边框,它用于选择框,这会抛出对齐.这适用于HTML5网站(例如支持IE9,Firefox,Chrome,Safari,Opera等).
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
border: 1px solid #000;
padding: 0;
margin: 0;
height: 22px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
input …
Run Code Online (Sandbox Code Playgroud) 问题:
我需要一个设备不可知(例如HTML5)解决方案,用于在手机或平板电脑类型设备(例如iOS/Android)上离线存储和查询250,000多行数据.我的想法是让人们在没有任何蜂窝数据连接的偏远地区工作,他们需要对这些数据运行查询并在离线时进行编辑.部分地,它将基于地理位置,因此如果他们所在的区域中有资产(使用GPS),那么它将显示这些资产并让它们被编辑.当他们返回办公室时,他们可以将数据同步回办公室服务器.
我从Web标准的角度来看这个问题的原因基本上是通过在HTML5中编写一次来节省金钱和时间,然后它可以跨多个平台工作,而不是在Objective C和Java中编写两次.此外,如果你写的是平台不可知的东西,那么你就不会被锁定,并且当每个人都搬到新的船上时,不要随船离开.我们有一个类似的应用程序为Windows Mobile 5编写,现在它没用,因为该平台已经死了.
设备上的脱机数据库需要是:
选项:
HTML5本地存储:
对于少量数据<5,000键/值,如果将其转换为JSON,甚至可以在其中存储数组/对象.
缺点:
Web SQL数据库:
缺点:
IndexedDB的:
键/值对象存储类似于本地存储,除了索引.
缺点:
这留下了实现已弃用的Web SQL方法的唯一选择,该方法可能仅工作一年左右.IndexedDB和本地存储目前无法使用.
我不确定Mozilla和Microsoft如何推荐Web SQL数据库标准,以及为什么W3C会让它发生.据称他们之间拥有77%的桌面浏览器市场.在先进的移动设备上,Mozilla和微软几乎没有影响力,因为Safari,Opera和Android拥有超过90%的市场份额.Mozilla和微软如何决定在最有可能使用离线存储的移动市场中应该使用哪种标准没有任何意义.
在Mozilla的评论中,为什么他们想要使用IndexedDB而不是主要关注"开发者美学",他们不喜欢在JavaScript中运行SQL的想法.我不是买它.
目前提出的标准较差,并且是一种非常基本的NoSQL实现,速度很慢,甚至不支持数据库中人们需要的高级功能.有许多样板代码来建立数据库并获取数据,但是他们声称人们会在其顶部编写一些很好的抽象库,它们将提供更高级的功能.截至2011年10月,他们无处可见.
他们已经弃用了现有的Web SQL标准,该标准实际上可以在主要的移动设备/平板电脑浏览器中实现.虽然主流移动浏览器无法提供"新"和"更好"的标准.
我们作为开发人员应该在未来3 - 5年内使用什么,这时IndexedDB规范可能会变得标准化,具有更多功能,在主要的移动/平板电脑浏览器中实现,还有一些很好的库可以让事情变得更容易?
W3C应该保持Web SQL数据库标准并行运行,并解决问题.它已经支持主要的移动平台,并且运行良好.事实上,Mozilla和微软作为拥有最多桌面浏览器份额的两家公司能够取消这一标准是非常可疑的,可能会被视为阻碍移动网络平台进展的尝试,直到他们能够赶上并提供针对iOS/Safari和Android的竞争解决方案.
总之,任何人都有我的问题的解决方案,适用于手机/平板电脑设备的iOS/Android.也许是一个很好的包装器API,它可以在后台使用多个数据库实现并具有查询功能,它允许您选择哪个数据库具有优先级.我已经看过像草坪椅这样的东西,但我很确定它只允许你默认使用本地存储,然后再回到其他存储.我想我宁愿使用Web SQL(默认情况下),然后使用较慢的选项.
对解决方案的任何帮助都非常感谢,谢谢!
我正在开发一个ASP.NET MVC3 Web应用程序(不是我编写的),其最大上载大小为100MB.现在,此Web应用程序已安装在客户端的服务器计算机上,因此,如果可以为每个客户配置此值最大上载大小,那将会很好.如果需要,他们可以访问Web应用程序的web.config.
现在web.config中有一个值,如下所示:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="104857600" />
</requestFiltering>
</security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
此外还有另一个值似乎相似:
<system.web>
<httpRuntime maxRequestLength="104857600" executionTimeout="360" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
104857600字节似乎是100MB文件上载限制.但是,在更改值时,我发现这不是权威值,并且它不遵守新限制.因此,在进行了一些挖掘后,我发现C#代码中的其他位置是硬编码值public const double MaxContentSize = 104857600
,另一个C#方法使用该值来接受/拒绝Ajax文件上载.
所以我想我想做的是替换代码中的硬编码数字,以便从web.config中的值读取.然后,至少任何人都可以在部署网站时在web.config中更改该值.
你能做这样的事吗?
MaxContentSize = ConfigurationManager.systemWeb.httpRuntime['maxRequestLength'];
Run Code Online (Sandbox Code Playgroud)
我在web.config中看过一些使用appSettings的例子,例如
<appSettings><add key="MySetting" value="104857600" /></appSettings>
Run Code Online (Sandbox Code Playgroud)
然后访问它像:
ConfigurationManager.AppSettings["MySetting"]
Run Code Online (Sandbox Code Playgroud)
但这意味着在那里添加自定义值,现在我们在web.config中有3个位置可以更改它.任何人都知道如何正确地做到这一点?
非常感谢
我在应用程序中使用的文件夹中有很多图像.当使用缓存清单时,如果我可以指定一个通配符来加载要缓存的特定目录中的所有图像或文件,则更容易维护.
例如
CACHE MANIFEST
# 2011-11-3-v0.1.8
#--------------------------------
# Pages
#--------------------------------
../index.html
../edit.html
#--------------------------------
# JavaScript
#--------------------------------
../js/jquery.js
../js/main.js
#--------------------------------
# Images
#--------------------------------
../img/*.png
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?在一些浏览器中尝试过它,../img/*
但它似乎不起作用.
好的我正在运行一个公共JSONP API,数据从我的PHP服务器提供.我刚读过这篇文章:
基本上,如果我的JSON字符串包含U + 2028字符(Unicode行分隔符)或U + 2029字符(Unicode段分隔符),那么这是完全有效的JSON.但是,当使用JSONP时,JSON将作为JavaScript执行,并且JavaScript中的任何字符串都不能包含文字U + 2028或U + 2029,因为它会破坏JavaScript.显然,只要您使用正确的JSON解析器,这通常不是问题,但在JSONP的情况下,浏览器是 JSON解析器.
基本上,如果这些字符在我的JSONP数据中的字符串内部被发送到客户端,则会在字符串中抛出一行或一个段落,这会破坏JavaScript并阻止它执行.这是一种可能性,因为API正在发回一些客户端输入的数据.有人可能会在数据库中输入U + 2028或U + 2029,因此当我将其作为JSONP发回时,它将使用我的API中断任何实现.
所以我的问题是,在PHP中如何清除/输出转义JSON数据以删除或转义U + 2028和U + 2029字符,然后再将其发送到客户端?
目前,我的进程正在对数据数组执行json_encode并将该数据发送到客户端.我应该通过循环遍历数组并过滤它来转义数据,还是一次性转义所有JSON编码的字符串?
另一件事是我不知道如何在PHP中逃避U + 2028和U + 2029字符.我可以做一个str_replace吗?我不确定str_replace是否是多字节安全的,并且没有mb_str_replace函数,除非我使用一些自定义的.那你如何删除/逃脱那些unicode字符?
非常感谢.
我现在一直在网上打猎几天试图解决这个问题,但得到了相互矛盾的答案.
是否有PHP的库,类或函数可以安全地清理/编码针对XSS的字符串?它需要定期更新以应对新的攻击.
我有几个用例:
用例1)我有一个纯文本字段,比如名字或姓氏
我想我可以做trim()
,strip_tags()
然后使用Sanitize过滤器或带有白名单字符的RegEx.他们真的需要像这样的人物!和?或者<
>
以他们的名义,不是真的.
用例2)当从先前保存的数据库记录(或从先前提交的表单)输出内容到View/HTML时,我想彻底清除它以用于XSS.注意:它可能已经或可能没有经过用例1中的过滤步骤,因为它可能是不同类型的输入,因此假设没有进行消毒.
最初我虽然HTMLPurifier会做这个工作,但是当我向他们的支持提出问题时,它似乎不是我需要的:
这是试金石:如果用户提交
<b>foo</b>
它应该显示为<b>foo</b>
或foo?如果是前者,则不需要HTML Purifier.
所以我宁愿它出现,<b>foo</b>
因为我不希望为简单的文本字段或任何执行的JavaScript显示任何HTML.
所以我一直在寻找能够为我做这一切的功能.我偶然发现了Kohana 3.0使用的xss_clean方法,我猜它是有效的,但只有当你想保留HTML时才会这样.它现在已经从Kohana 3.1中弃用,因为它们已经用HTMLPurifier取代了它.所以我猜你应该做的HTML::chars()
只是做这个代码:
public static function chars($value, $double_encode = TRUE)
{
return htmlspecialchars( (string) $value, ENT_QUOTES, Kohana::$charset, $double_encode);
}
Run Code Online (Sandbox Code Playgroud)
现在显然你应该使用htmlentities而不是像Stack Overflow中的很多地方所提到的那样,因为它比htmlspecialchars更安全.
好吧它是2013年1月19日22:30 NZST和大多数互联网似乎已经爬行,因为Google Analytics似乎运行速度非常慢.Stackoverflow,Firefox.com,reddit和谷歌搜索都很慢.对我来说最重要的是,我的生产企业网站运行缓慢或根本没有加载.不,这不只是我的连接,我也在手机上测试了3G.没有Google Analytics的网站似乎运行正常.
这是一些发生的截图
这位于Firefox窗口的左下角.它将在那里停留20多秒.如果它无法连接,我希望它在3秒后消失.
这个旋转的绿色图像位于Firefox选项卡中,只是坐在那里使它看起来像页面仍然加载20秒以上.如果它无法连接,我希望它在3秒后消失.
现在它可能不是谷歌分析,我的国家'国际网关可能运行缓慢或其他东西.但有证据表明它可能是谷歌分析.现在,即使它不是谷歌分析,那么如果服务完全失效,我仍然会对某些方法感兴趣.所以假设我们假设Google Analytics数据中心发生大火并且灭火系统失败了.现在,Google Analytics几天完全脱机.没有备份服务器.没有备用数据中心.假设情景确定.现在我的网站仍然需要运行,因为我无法让我的网站依赖Google Analytics服务.但是,如果服务实际上及时运行,那么分析功能可以作为额外的奖励.
好的,我在这里抛出一些想法:
这是我们必须使用的代码,它当前在结束</body>
标记之前插入.
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-123456789-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
Run Code Online (Sandbox Code Playgroud)
现在,我可以采用哪些方法来解决这个假设的灾难情景,并在Google Analytics停机时让我的网站保持连续性?我对潜在的软件或硬件解决方案感兴趣.假设我可以完全访问我的PHP/MySQL/HTML5网站运行的Linux VPS.
此外,对此有何权威性答案:有人说将代码放在结束</head>
标记之前.其他人说把它放在结束</body>
标签之前.哪种方式最好?
非常感谢
解决方案更新
好的,我发现了什么在Jaspal的帮助下有效.解决方案如下.
<script type="text/javascript">
// Load Google Analytics after my …
Run Code Online (Sandbox Code Playgroud) 我需要为iPad /平板电脑设备构建一个离线HTML5网络应用程序,用户可以从服务器下载数据集(数据表)并将其存储在设备上.然后,用户可以断开与服务器的连接,并在设备上本地查看/编辑数据.这适用于在没有蜂窝覆盖且需要收集/更新数据的偏远地区工作的人.当他们回到办公室时,他们可以将数据同步/上传回服务器.它需要成为HTML5的原因是它与平台无关,即只要它具有支持HTML5的现代Web浏览器,就可以在iOS,Android等上运行它.
现在我已经使用HTML5本地存储(用于数据)和HTML5离线应用程序缓存(用于pages/css/js/images)构建了系统,并且它可以很好地处理小数据集(我可以查看,编辑和保存)在线时离线和加载/同步).现在我需要扩展到10,000行数据.它工作正常,但它很慢,并在加载到英特尔四核8GB机器上时将浏览器挂起10秒.
所以我一直在研究一些比本地存储更好的选择:
1)WebSQL:能够使用SQL语言查询数据并进行连接等问题是它现在已被弃用,不再支持了,所以我不想花时间为它构建一些东西.
2)IndexedDB:使用对象存储(从技术上讲,我已经使用本地存储API存储对象并使用JSON存储).由于它使用带有SQL lite后端的索引,因此可能更快.有许多样板代码可用于执行简单的任务,例如创建数据库,添加数据库,读取数据库,迭代数据库.我只是想做一个简单的查询,select(xyc, abc).where(abc = 123).limit(20)
但是必须编写很多JavaScript代码来完成它.如何编写自己的代码来在表之间进行连接,任何地方的任何示例?
我发现了一个可能让生活更简单的jQuery插件.是否有其他库或其他库可以减轻使用IndexedDB的痛苦?
非常感谢!
我目前有3个表格,用于存储世界上所有主要城市的信息,每个地区/州对应这些国家/地区,以及每个城市/地区.
现在我在我的数据库中有大约6个其他表,例如需要完全相同的5列的用户或组织表:地址,郊区,城市,州/地区,国家.所以我想知道是否"良好"的规范化实践可能使用存储这5条信息的"位置"表,然后用户或组织表将有一个location_id来引用回来.
好主意还是坏主意?我也在考虑使用"联系人"表,其原理相同,包括home_phone,business_phone,mobile_phone,email_address,而不是在6个表中的每个表中都有相同的5列.
任何建议表示赞赏 非常感谢!
mysql database database-design normalization denormalization
我有一个PHP数据库类连接到MySQL并包装所有的PDO代码,我用它来查询数据库.基本上在页面控制器中我创建了一个新对象:
$db = new Database($dbConfig);
Run Code Online (Sandbox Code Playgroud)
然后我可以使用准备好的查询从数据库中获取数据:
$params = array('username' => $username);
$result = $db->preparedSelect('select password, salt from users where username = :username', $params);
Run Code Online (Sandbox Code Playgroud)
它将PDO语句结果复制到新的assoc数组中,并仅将数据库结果返回给调用页面.我用一个简单的foreach迭代它们,如下所示:
foreach ($result as $key => $val)
{
$password = $val['password'];
$salt = $val['salt'];
}
Run Code Online (Sandbox Code Playgroud)
好吧,假设我想让另一个类使用我的$ db对象,以便它可以在某些方法中访问数据库.目前另一堂课看起来像这样:
class General
{
// Database object
private $db;
public function __construct($db)
{
$this->db = $db;
}
}
Run Code Online (Sandbox Code Playgroud)
这很好但我只是想知道构造函数应该是这样的:
public function __construct(&$db)
{
$this->db = $db;
}
Run Code Online (Sandbox Code Playgroud)
这应该意味着我通过引用传递它而不是将对象复制到另一个类中.我不想$ db对象的副本类中,我希望它使用现有的数据库对象,所以我没有它的多个拷贝流传使用内存.
在以$ db或&$ db传递它之间PHP5有什么区别吗?从做一些阅读来看,PHP5默认情况下通过引用传递对象,其他人说现在用Java方式做,有些人说使用&做了一个硬链接.我糊涂了.最好的方法是什么?
非常感谢!
html5 ×3
javascript ×3
php ×3
database ×2
indexeddb ×2
jquery ×2
ajax ×1
asp.net ×1
asynchronous ×1
caching ×1
css ×1
escaping ×1
filtering ×1
html ×1
iis-7 ×1
jaydata ×1
json ×1
jsonp ×1
manifest ×1
mysql ×1
offlineapps ×1
oop ×1
sanitization ×1
security ×1
str-replace ×1
textbox ×1
web-config ×1
web-sql ×1
web-storage ×1
xss ×1