2013-07-04 40 views
0

我可以使用Visualforce編輯salesforce/visualforce頁面的默認佈局嗎?有沒有辦法獲取/編輯Visualforce頁面的默認佈局?

最終目標是修改「編輯」和「新建」操作的默認佈局,以便在外部API的特定字段上添加某種自動完成功能。

我希望能夠添加我的JavaScript代碼而不需要完全重寫Visualforce頁面。

+0

如果你有側邊欄組件啓用,那麼你可以在側邊欄中的JavaScript,使用它你可以添加自動完成功能到新的和編輯頁面。附加好處是你不必提出任何音頻頁面 – Anamadeya

+0

你有這個「詭計」的例子嗎? – Oxymore

回答

1

您可以在主頁組件中添加下面的jQuery。打開一個新的帳戶頁面並在運輸國家或結算國家字段中鍵入內容,您將自動完成操作。在下面的腳本中,我有一個國家的靜態數組,您可以通過與您的外部服務器進行集成來實現動態數組。

步驟:
1)創建一個類型爲HTML區域和縮小部分的主頁組件,並添加下面的腳本。
2)將主頁組件添加到主頁佈局。
3)確保選中「在所有頁面上顯示自定義側欄組件」(設置 - >應用程序設置 - >用戶界面)。
4)點擊一個新帳戶並輸入'In',你會發現autocomplee正在運行。

<script src="http://code.jquery.com/jquery-1.8.2.js"></script> 
<script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script> 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css"/> 
<script type="text/javascript"> 
    /*Create a new variable j$ just to avoid any conflicts with other libraries which may be using $.*/ 
    var j$ = jQuery.noConflict(); 
    /*Capture the list of countries in a Array.*/ 
    var countryArray = ['India', 'USA', 'China','FInland','Norway','Netherlands','England','Ukraine','Russia','Japan','Korea','Burma','Srilanka','Iran','Iceland','Canada','Rome','Australia','Armenia','Albania','Afghanisthan']; 
    /*on Document ready*/ 
    j$(document).ready(function(){ 
     j$("#acc18country, #acc17country").autocomplete({ 
      source : countryArray 
     }); 
    }); 
</script> 

enter image description here

希望這 「絕招」 爲你的作品!
P.S:如果您使用的是谷歌Chrome瀏覽器,那麼這可能不會第一次。當你加載頁面時,你可能會在地址欄的右側看到一個灰色的盾牌,點擊它並選擇「加載不安全的javascript」。爲了避免這種情況,請將javascript和css文件添加到靜態資源中,然後在腳本標記中引用它們。

編輯:
現在要從外部API提取數據,您應該添加下面的代碼。

<script src="/soap/ajax/26.0/connection.js" type="text/javascript"></script>  
var sid = getCookie('sid'); /*get the session ID cookie*/ 
var server = "https://" + window.location.host + "/services/Soap/u/26.0"; 
sforce.connection.init(sid, server);/*Initialize the sforce connection*/ 
sforce.connection.remoteFunction({ 
    url: "https://api.github.com/user/", 
    requestHeaders: {"Content-Type":"application/json"} 
    onSuccess : function(response) { 
         console.log('The response is ' +JSON.stringify(response)); 
       }, 
    onFailure : function(response) { 
         console.log("The request Failed with error: " + response) 
}); 

但是,提出這個要求,確保您在遠程站點設置(設置 - >根據管理員>安全控制 - >遠程站點設置)添加外部API(https://api.github.com)之前

+0

好吧,autocompletion部分是從靜態數據工作,但顯然我不能使用ajax grabit訪問外部API(因爲缺少會話ID和相同的源策略),任何線索或另一個聰明的技巧來做到這一點? – Oxymore

+1

在答案中做了一些修改,希望它有幫助! – Anamadeya

+0

謝謝!我設法使用jsonp直接調用(不使用ajax代理)我的API。但是,我猜這會在沒有提供jsonp實現時非常有用! – Oxymore

相關問題