0

是否可以在 HTML 页面中获取 Flex 应用程序的 x,y 坐标?我知道您可以使用 ExternalInterface.ObjecID 来获取“Internet Explorer 中对象标记的 id 属性,或 Netscape 中嵌入标记的名称属性”,但我似乎无法通过该步骤。似乎应该有可能获得该嵌入对象的句柄。有什么建议么?

谢谢。

4

2 回答 2

4

我认为最简单的做法是在 HTML 页面上包含某种 JavaScript 库,比如 jQuery,并使用它的函数来确定 DOM 节点的位置和大小。我或多或少会这样做:

var jsCode : String = "function( id ) { return $('#' + id).offset(); }";

var offset : Object = ExternalInterface.call(jsCode, ExternalObject.objectID);

trace(offset.left, offset.top);

请注意,这是 ActionScript 代码,但它通过ExternalInterface. 它使用 jQuery,特别是它的offset方法,它返回 DOM 节点的左和上偏移量。

offset如果您查看了该方法的实现方式并包含该代码来代替对 jQuery 的调用,那么您可以不使用jQuery。这样您就不需要在 HTML 中加载 jQuery,Flex 应用程序将是独立的。我建议使用像 jQuery 这样的库的原因是浏览器做这些事情的方式不同。我不确定计算偏移量是否因浏览器而异,但不受浏览器差异的影响并没有什么坏处。

我的示例中的 JavaScript 是一个匿名函数,因此 embed/object 标记的 ID 可以作为参数传递给它ExternalInterface.call,但如果需要,您可以只使用字符串连接:

var jsCode : String = "$('#' +" + ExternalInterface.objectID + ").offset()";

var offset : Object = ExternalInterface.call(jsCode);

那也可以,我只是认为第一个版本更优雅。

于 2008-09-18T11:21:17.323 回答
0

如果您只是想以外部用户的身份测量它在页面内的位置,那么我唯一想到的就是一个名为 MeasureIt 的 Firefox 扩展,我偶尔会用它来测量网页上的各种情况。

您是否尝试从嵌入页面本身以编程方式执行此操作,如果是,则使用哪种语言?

于 2008-09-18T01:49:27.760 回答