2008-09-18 55 views
0

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

谢谢。

回答

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运行JavaScript代码。它使用jQuery,特别是其返回DOM节点的左侧和顶部偏移量的方法。

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

在我的例子中的JavaScript是一个匿名函数,以便嵌入/ OBJECT标签的ID,可以在把它作为参数传递给ExternalInterface.call,但你可以只使用字符串连接,如果你想:

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

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

这也可以,我只是觉得第一个版本更优雅。

+0

谢谢!我会投这个答案,但我没有足够的声誉。 – user15899 2008-09-22 15:04:18

0

如果您只是想测量它作为外部用户在页面内的什么位置,那么我想到的唯一一件事就是名为MeasureIt的Fi​​refox扩展。我偶尔会使用它来进行网页上的各种测量。

你是否试图从嵌入式页面本身以编程方式做到这一点,如果是这样的语言?

相关问题