获取Flex应用程序在网页上的位置?
时间:2020-03-06 14:19:38 来源:igfitidea点击:
是否可以在HTML页面中获取Flex应用程序的x,y坐标?我知道我们可以使用ExternalInterface.ObjecID来获取" Internet Explorer中对象标签的id属性,或者Netscape中embed标签的名称属性",但我似乎无法超越这一步。似乎应该可以对该嵌入对象进行处理。有什么建议?
谢谢。
解决方案
如果我们只是想测量外部用户在页面中的位置,那么我想到的唯一一个是Firefox扩展,名为MeasureIt,我偶尔将它用于各种网页测量。
我们是否正在尝试从嵌入式页面本身内部以编程方式执行此操作,如果是,则选择哪种语言?
我认为最简单的方法是在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,尤其是使用其" 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);
那也行得通,我只是认为第一个版本更优雅。