2016-10-19 53 views
0

標題可能有點雜亂。基本上我想要做的是創建一個自定義函數,將修改對象屬性,然後返回該對象,然後調用一個函數。更改對象屬性,然後使用javascript調用自定義函數中的函數

關於我在做什麼的一點背景:盡我所能與Zendesk API在我的網頁上使用Web小部件。基本上這個網頁小工具被配置成啓動時的一個幫助中心,然後根據狀態顯示實時聊天或電子郵件的按鈕。這裏所討論的主要屬性叫做'suppress',它禁用了其中一個小部件頁面(聊天,電子郵件& helpCenter)。我的目標是使這個自定義函數「壓制」3個小部件頁面中的2個,因此它只顯示一個。然後稱爲zE.activate()的API函數將打開該窗口小部件。

我知道這是一個大量的文字,讓我告訴你,到目前爲止我已經得到了代碼:

<script> 
function setChatPopOutProps(window) { 
    window.zESettings = { 
     webWidget: { 
      contactForm: { 
       suppress: true 
      }, 
      helpCenter: { 
       suppress: true 
      } 
     } 
    }; 
    return window.zESettings; 
}; 
function chatPopOut() { 
    setChatPopOutProps(window); 
    zE.activate(); 
}; 
</script> 

現在,當我點擊,因爲它有chatPopOut()分配的zE.activate()作品按鈕打開窗口小部件,但基本上setChatPopOutProps(window)似乎沒有工作。

我也試過如下:

  • 不是通過把zE.activate()zESettings末或剛返回後返回windowwindow.zESettings
  • 下單功能將所有內容windowwindow.zESettings

如果您需要查看構件纔能有想法,可以看到它right here。點擊右下角的綠色按鈕,輸入任何內容,然後你會看到聯繫表單按鈕彈出。當實時聊天代理可用時,該按鈕將變爲聊天按鈕。

現在我知道這是我通常應該直接與Zendesk合作的東西,我試過了,但他們告訴我沒有什麼能做我想完成的事情,但我真的覺得這有些東西用我在JavaScript中做事的方式來做,而不是API的內置方式。

有沒有人有想法?我真的很感激。

P.S.這是我的第二篇文章,所以我很抱歉提出我在這個問題上可能犯的錯誤。

+0

在你的函數chatPopOut()中,var window是一個空值,因爲它沒有被函數傳遞。它不應該是chatPopOut(窗口)? –

回答

0

不幸的是,事實證明,你正在努力完成的事情是不可能的。隨着zE.settings在小部件首次初始化時得到應用,因​​此無法在不執行刷新頁面和重新初始化小部件等操作的情況下動態更改小部件設置。從代碼中可以看到,我不認爲每次都要刷新頁面,並重新初始化小部件,以便應用上面列出的那些設置。

相關問題