- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试制作一种方法,将对象传递给弹出窗口中的类似方法。我无法控制目标方法中的代码或传入的对象。目标方法当前序列化对象,尽可能使用 JSON.stringify
或 instanceof Array
.
第一个问题是 IE8 中的错误(见下文)。第二个,也是更基本的,是原语在不同的窗口中是不一样的:
w = open("http://google.com")
w.Array == Array // returns false
在弹出窗口上覆盖任何可能传入的类,然后在调用有效后恢复它们,但这确实很脆弱并且维护起来很头疼。
将对象序列化为 JSON,然后在窗口的上下文中解析它会遇到下面的 Firefox 错误。
我也有点厌恶使用 new w.Object
等方式对对象进行深拷贝或解析 JSON,因为它不应该那么复杂。
任何人都可以建议一个明智的方法来处理这个问题,还是我应该接受对象不能在窗口之间逐字传递?
JSON.stringify
在 IE8 中不能跨窗口工作。如果我将一个对象传递给尝试序列化它的弹出窗口,则 stringify 返回 undefined
。要查看此问题,请在 IE8 中打开脚本控制台并尝试:
w = open("http://google.com")
JSON.stringify(Object()) // returns "{}"
w.JSON.stringify(w.Object()) // returns "{}"
w.JSON.stringify(Object()) // returns "undefined" on IE8
JSON.stringify(w.Object()) // returns "undefined" on IE8
JSON.stringify([1, w.Object()]) // returns "[1,null]" on IE8
我尝试通过设置 w.JSON = JSON
来解决这个问题,但正如上次测试所示,当您同时拥有来自两个窗口的对象时,这会中断。
在Firefox中调用w.Object()
创建对象似乎调用了window.Object()
。调用 w.JSON.parse
或 w.eval
时会遇到同样的错误。要查看此内容,请打开 Firebug 的控制台并尝试:
w = open("http://google.com")
new w.Object instanceof w.Object // returns true
w.Object() instanceof w.Object // returns false on Firefox 3.5
w.Object() instanceof Object // returns true on Firefox 3.5
w.Object.call(w) instanceof Object // returns true on Firefox 3.5
w.JSON.parse("{}") instanceof w.Object // returns false on Firefox 3.5
w.JSON.parse("{}") instanceof Object // returns true on Firefox 3.5
w.eval("[]") instanceof w.Array // returns false on Firefox 3.5
w.eval("[]") instanceof Array // returns true on Firefox 3.5
w.eval.call(w, "[]") instanceof Array // returns true on Firefox 3.5
我能看到的唯一解决方法是自己解析 JSON 字符串。
最佳答案
为了它的值(value),这就是我现在正在做的:
w.$.evalJSON(str)
,正确绑定(bind)原语或者(如果 jquery-json 不可用),您可以将以下脚本注入(inject)目标:
<script type="text/javascript">
function parseJSON(j) {
return JSON.parse(j)
}
</script>
因为这将捕获弹出窗口的 JSON,而不是调用者的。
如果有更好的解决方案,我们将不胜感激。
关于javascript - 跨窗口Javascript : is there a right way?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105714/
我有一个 Segment 类和一个这样的段数组: private static class Segment { int number, type; Segment(in
我在 SO 中看到一些创建 multilanguage websites in JavaScript 的好建议包括 this article on JavaScript internationaliz
我们有浏览器前缀或黑客 (for Google and Safari) text-align: -webkit-right; (for Firefox) text-align:
过去几天我一直在关注这个问题,我正处于需要寻求帮助的地步。 http://cub.northnodes.com/index.php/about/mission/ 我需要立即捐赠 列一直 float 到
When I press right ctrl, I want the right shift the text will align right. When I press left ctrl le
我已经将右侧的列拆分为顶部和底部。在每个部分中,我在执行以下操作时遇到问题:我希望顶部占据左列高度的 50%,底部占据左列高度的另外 50%。 +-------------------+-------
我知道这个问题的标题很糟糕。对不起。 我有四个 div similar to this .我想要做的只是让 div 编号 2 和 4 之间的垂直空间被删除,而不改变 HTML 的结构。是否可以仅使用
我将表格设置为 100% 宽度。我会添加一个带有 php 的随机 div,有时会充满广告。我希望广告 div 位于表格的右侧和内容。我希望表格位于左侧,但仍为 100% 左右,它将填充广告 div 左
这个问题在这里已经有了答案: Bootstrap align navbar items to the right (24 个答案) 关闭 5 年前。
.floatright { float: right;margin: 0 0 10px 10px;clear: right;width:60px; height:60px; } Lorem
我正在尝试将 td 中的某些内容右对齐。 align="right"有效,但 text-align:right 无效。这是一个 jsfiddle显示这两种情况的示例。除了右对齐右列外,这两种情况是相同
在设计网站时,您认为用于特定任务的最佳图像格式是什么? 在试图找出用于特定任务的格式时,我总是发现自己处于两难境地……例如,我应该全面使用 .jpg 吗?或者,我何时以及为什么应该使用 .png? 例
我是一个 MySQL 新手,今天我尝试设置一个超过 5 行的 MySQL 调用。我不断收到语法错误,我尝试修复了几个小时,但我不知道问题出在哪里。这是代码: USE myDatabase; DELIM
这让我发疯。我有一个 div float 到另一个 div 的右侧,如下所示: Current Membership: 我有以下 css 规则: div#container { f
我有以下代码片段,它会产生不需要的“填充”区域,而填充为零。如何避免这个区域? 代码 div.left { background-color: red; max-width: 25%; f
在 C++ 中,表达式 left() = right() 求值 right() left() 按那个顺序。 right() 先行,正如已讨论过的 here. 我想不出让 right() 先走的理由。你
我有一个很小的菜单列表,当鼠标靠近时它应该会增长。在其原始状态下,菜单是右对齐的,悬停时每第二个元素向右移动并左对齐以为增加的高度腾出空间(参见 JSFiddle )。 ul { font-siz
td.myclass{ width: 6em; text-align: right; padding-right: 2em; } 如您所见,我希望单元格中的文本右对齐,距离单元
你怎么能看到 http://jsfiddle.net/73wst/ 我想在停止下开始,但我不知道如何设置它的样式。 我的 HTML: Stop Start 我的 CSS: .sta
一个大的内部 div 在一个小的外部 div 中,并且外部 div 溢出自动。但是为什么没有内部 div margin-right 和外部 div padding-right? html
我是一名优秀的程序员,十分优秀!