是否可以在 HTML 页面中获取 Flex 应用程序的 x,y 坐标?我知道您可以使用 ExternalInterface.ObjecID 来获取“Internet Explorer 中对象标记的 id 属性,或 Netscape 中嵌入标记的名称属性”,但我似乎无法通过该步骤。似乎应该有可能获得该嵌入对象的句柄。有什么建议么?
谢谢。
是否可以在 HTML 页面中获取 Flex 应用程序的 x,y 坐标?我知道您可以使用 ExternalInterface.ObjecID 来获取“Internet Explorer 中对象标记的 id 属性,或 Netscape 中嵌入标记的名称属性”,但我似乎无法通过该步骤。似乎应该有可能获得该嵌入对象的句柄。有什么建议么?
谢谢。
我认为最简单的做法是在 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);
那也可以,我只是认为第一个版本更优雅。
如果您只是想以外部用户的身份测量它在页面内的位置,那么我唯一想到的就是一个名为 MeasureIt 的 Firefox 扩展,我偶尔会用它来测量网页上的各种情况。
您是否尝试从嵌入页面本身以编程方式执行此操作,如果是,则使用哪种语言?