1. 概述
本文將介紹各類超級連結使用程式中遇到的問題和解決方案。
2. 超連結到說明文檔無效
問題描述
網頁連結的 URL 設定為說明文檔的地址:https://help.fanruan.com/finereport/。
報表預覽時點選超連結,說明文檔網頁內容無法正常顯示,如下圖所示:
原因分析
報表解析網頁連結的時候會自動加上時間戳,說明文檔的連結增加時間戳之後跳轉有問題,目前未發現除了說明文檔之外有問題的連結。
解決方案
設定說明文檔超連結時,不要用網頁連結的方式,改用JavaScript腳本的方式,程式碼如下:
3. 動態參數問題
3.1 動態參數為陣列時報錯
問題描述
當「動態參數」類型的超級連結裏面的參數為如下圖所示的陣列類型時。
點選該超級連結會出現報錯資訊:「錯誤程式碼:11300001 資料集配置錯誤」,如下圖所示:
原因分析
因為在超連結程式中會將陣列類型的動態參數轉化為字串類型,故而會導致這樣的錯誤。
解決方案
在新增超級連結類型為「動態參數」時,不可以使用陣列類型的動態參數,需要 用 joinarray 函式將陣列轉換為字串
3.2 動態參數為空時日誌報錯
問題描述
例如文檔 多欄動態排序 中的範本,當報表中設定了動態參數 $asc,其值為「儲存格」,又使用了 $a[!0] (獲取擴展後儲存格值)這種類型的公式,設計器日誌中會出現報錯:ERROR [standard] 錯誤的描述為: [!0]。如下圖所示:
注:不影響範本的正常使用。
原因分析
因為當頁面初始化預覽時,動態參數 $asc 為空,如果沒有設定 asc 參數的預設值,則需要點選超連結後才被指派。所以公式解析失敗,就會報錯。
解決方案
可在範本參數中設定一個相同名稱的參數,並給參數設定一個預設值(任意一個超連結的儲存格),如下圖所示:
因為不影響範本的正常使用,不介意日誌中報錯資訊則可以不做改變。
3.3 動態參數設定特效點選後回到第一頁
問題描述
範本製作是透過動態參數來實現展開與摺疊效果,點選後,頁面回跳回第一頁。
原因分析
超連結動態參數點選之後會全局重新整理,所以相當於又進行了一次預覽操作,因此傳回第一頁。
解決方案
改為資料分析預覽,或修改動態參數的設定。
4. 去除超級連結底線
問題描述
儲存格新增超級連結後,會自動有個底線,如下圖所示,那麼如何去掉這條線呢?
解決方案
這個底線其實就是儲存格里面文字加了底線,只需要去掉這個文字底線就行。
去掉底線的效果如下圖所示:
5. 日期公式作為超連結參數時的回傳值
日期公式作為超連結參數被傳參出去時,將會傳出 Date 類型原值,也就是帶有時分秒的值,格式為:yyyy-mm-dd hh:mm:ss
但是如果日期公式直接在儲存格中展示,預覽時儲存格轉 html,會將 Date 類型轉化成字串,會去掉時分秒,格式為:yyyy-mm-dd
例如:一張範本裏設定了超連結,連結到另一張範本,參數是公式today()
另一張範本裏,一個儲存格里直接寫公式today(),一個儲存格里引用這個參數。
最終超連結跳轉後,預覽效果如下圖所示
6. 使用超連結連結-網頁連結開啟對話框無法正常跳轉
問題描述
網頁連結中的地址可以在瀏覽器直接開啟存取,但該地址掛載到frm的圖表超連結上後,預覽frm圖表,點選超連結區域,彈出被拒絕的對話框。
原因分析
瀏覽器和伺服器的 iframe 限制。存取地點設定X-Frame-Options,確定網站不被嵌入其他的地點中。範本頁以及彈出的對話框就是不同源,所以對話框存取此類網頁連結,無法正常存取。
解決方案
1)不使用對話框開啟,用超連結到新頁面開啟,此方法安全性高,不需要關閉各項配置。
2)關閉 FineReport 工程安全管理的 Security Headers,另外需要被對話框存取的各應用伺服器都要刪掉 X-Frame-Options(目前不能確認其他非 FineReport 應用刪掉這項配置後的安全性風險)