为什么Google会while(1);在其(私人)JSON响应前加上?
例如,这是在Google日历中打开和关闭日历时的响应:
while(1);[['u',[['smsSentFlag','false'],['hideInvitations','false'],
['remindOnRespondedEventsOnly','true'],
['hideInvitations_remindOnRespondedEventsOnly','false_true'],
['Calendar ID stripped for privacy','false'],['smsVerifiedFlag','true']]]]
Run Code Online (Sandbox Code Playgroud)
我认为这是为了防止人们eval()对它进行操作,但你真正需要做的就是更换while然后你就可以了.我认为eval预防是为了确保人们编写安全的JSON解析代码.
我已经在其他几个地方看到了这种情况,但谷歌(邮件,日历,通讯录等)的情况更是如此.奇怪的是,谷歌文档开始了&&&START&&&,谷歌联系人似乎开始while(1); &&&START&&&.
这里发生了什么?
我目前正在处理一个表单,除了表单的所有正常字段外,还有上传图片的文件输入,onchange将图片提交给iframe,然后将上传的图片加载到带有要修改的字段的表单中对于他们(如名称和地理定位).由于我无法嵌套表单,file_input也包含在iframe中,所以最后我在iframe中使用了iframe.如此示意,我有这样的事情:
<form>
<!-- LOTS OF FIELDS!! -->
<iframe src="file_input_url">
<!-- iframe which loads a page of a form with a file input-->
</iframe>
</form>
Run Code Online (Sandbox Code Playgroud)
和iframe中加载的html类似(忽略html,head和body标签)
<form target="upload_iframe">
<input type="file" onchange="this.form.submit()">
</form>
<iframe name="upload_iframe"></iframe>
Run Code Online (Sandbox Code Playgroud)
这很好用,除了加载第一个iframe需要几秒钟,因此文件输入不会加载到页面的其余部分,并且在视觉上并不理想.我可以解决这个问题,如果可以指定iframe内容而无需加载另一个页面(在第一个iframe中由'file_input_url'指定).
所以,我的问题是,有没有办法在同一个文档中指定iframe内容,或者只能用src属性来表示,所以需要加载另一个页面?
jQuery模板已经被弃用了一段时间了.
我有一些JavaScript对象形式的数据,我想格式化为HTML并附加到DOM.这些天最好的办法是什么?
$('<li>',{id:'my-'+Id}).append($('<span>').text(myText))吗?我有一些小模板字符串,它们将通过同一页面上的Mustache.js呈现.我不需要为模板创建单独的html文件.
存储模板的选项:
存储在javascript变量中:破解多行字符串,大量转义引号.
存储为隐藏div的innerHTML.
我尝试了方法#2,但它似乎无法正常工作.
小提琴:http: //jsfiddle.net/RHwnq/2/
<html>
<head></head>
<body>
<div id='templates' class='hide' align="">
<div id='tableTemplate'>
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
</div>
</div>
<script>
var template = $('#tableTemplate').html();
console.log(template);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这个日志:
{{#name_list}}
{{name}}
{{/name_list}}
<table class="table"><tbody><tr><td></td></tr></tbody></table>
Run Code Online (Sandbox Code Playgroud)
代替 :
<table class="table">
{{#name_list}}
<tr><td> {{name}} </td></tr>
{{/name_list}}
</table>
Run Code Online (Sandbox Code Playgroud)
这可能是由于浏览器进行了一些标记更正.在HTML页面中存储HTML模板有哪些其他好的技巧?
我有这个模板脚本
<script id="some-template" type="text/x-handlebars-template">
{{#users}}
{username}
{email}
</script>
Run Code Online (Sandbox Code Playgroud)
我想将它外包给一个名为"user_template.js"的文件,它看起来像这样:
{{#users}}
{username}
{email}
Run Code Online (Sandbox Code Playgroud)
并在主index.html中建立此链接:
<script id="some-template" type="text/x-handlebars-template" src="user_template.js"></script>
Run Code Online (Sandbox Code Playgroud)
问题是 - 它不起作用 - 我该怎么办?
在此代码的基础上有以下 3 个脚本标记。我不希望它们出现在我的 html 文档中,但如果我尝试删除它们,它们会阻止我的 <script type="text/template" id="login-template">表单正常工作。基本上它似乎隐藏了输入字段。
为什么是这样?
我什至删除了 ` 中的 JS 实际代码来尝试解决这个问题。
<script type="text/template" id="manage-todos-template"></script>
<script type="text/template" id="item-template"></script>
<script type="text/template" id="stats-template"></script>
Run Code Online (Sandbox Code Playgroud)
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="fresh Gray Bootstrap 3.0 Responsive Theme "/>
<meta name="keywords" content="Template, Theme, web, html5, css3, Bootstrap,Bootstrap 3.0 Responsive Login" />
<meta name="author" content="Adsays"/>
<title>Parse JavaScript Todo App</title>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="scripts/underscore-1.1.6.js"></script>
<script src="http://www.parsecdn.com/js/parse-1.2.13.min.js"></script>
<script src="scripts/todos.js"></script>
<link rel="shortcut icon" href="favicon.png">
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.css" rel="stylesheet"> …Run Code Online (Sandbox Code Playgroud) 我正在玩弄HTML和Javascript中的一些基本结构(即,我是一个HTML/Javascript n00b),并且有一个功能我似乎无法正确实现.简而言之,我想从HTML页面的主体中获取文本并使用Javascript(eval()或new Function())对其进行评估.要看到我对eval()的使用是正确的,我首先尝试了以下代码,它按预期工作(并显示值5):
<script>
window.onload = function () {
eval("var t = function () { if (5>0) return 5; }();");
document.body.innerHTML = t;
}
</script>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试实现从HTML中获取"代码"并运行它的目标时,这对我来说似乎失败了.这是一段不起作用的代码(我尝试过很多变种):
<script>
window.onload = function() {
var x = document.getElementById("myP").innerHTML;
eval("var e = " + x + ";");
document.body.innerHTML = e();
}
</script>
<body>
<p id="myP">function () { if (5>1) { return 5; } } </p>
</body>
Run Code Online (Sandbox Code Playgroud)
我测试了变量x确实包含了正文中所需的"代码".但由于某种原因,上述情况将无法正常运作; 它只会显示正文并eval在更新innerHTML后忽略它和语句.
更奇怪的是,当我尝试"更复杂"的代码时,它工作正常,例如:
<script>
window.onload = function() {
var x = document.getElementById("myP").innerHTML;
eval("var e …Run Code Online (Sandbox Code Playgroud)