无法在内联VF页面中从jQuery访问标准页面的DOM元素

时间:2012-11-06 15:25:12

标签: jquery salesforce visualforce

我创建了一个简单的vf页面,并在vf页面中放置了小的jQuery脚本(在代码下面)。我已将此vf页面添加为案例详细信息页面中的内联VF页面。在jQuery中,我试图通过传递案例编号所在的div的id来提取案例编号并提醒结果。但我得到一个空白的弹出窗口。 但是当我尝试相同时,通过将jQuery放在侧边栏中,它的工作正常。

<apex:page standardController="Case">
<script src="/resource/jQueryLatest" type="text/javascript"></script>
<script type="text/javascript">
j$(document).ready(function(){
    var caseNumber = j$("#cas2_ileinner").text();
    alert(caseNumber);
});
</script>
</apex:Page>

问题:无法从jQuery脚本访问标准详细信息页面的DOM元素,该脚本位于同一页面的内联vf页面中。

请帮忙!

此致 萨姆

1 个答案:

答案 0 :(得分:2)

是的,“按预期工作”。 Visualforce由不同的域(* .visual.force.com)提供,您的浏览器可以阻止跨站点Javascript。

使用VF页面中的合并字段,您不需要JS来获取它:)

var caseNumber = '{!Case.CaseNumber}';

修改

在节标题中嵌入静态资源的讨厌技巧:

您需要一个具有纯JavaScript代码,没有标记,样式等的静态资源。

alert('Hello StackOveflow!'); //is OK,
<script>alert('Hello StackOveflow!');/* is not OK */</script>

然后,您只需在页面块部分名称中引用它:page layout editor

<强>考虑:

  1. 如果您有依赖项(首先加载jQuery,然后是一些依赖它的代码)我认为最好使用2个部分标题(您也可以将您的代码放在jQuery代码之后,但这会破坏可重用库的目的)。使用复选框控制何时显示它。
  2. 最好将这些部分放在“细节”的底部 - 它们看起来有点难看(特别是在编辑页面上),如果他们想要引用页面上的字段,则必须已经加载字段。 / LI>
  3. 完全按照静态资源中的写入注入Javascript。 {!megefields}语法不会将服务器端替换为您期望的值。