2012-10-19 53 views
-2

我有一個(long)<script>元素,顯示Google可視化。代碼直接來自Google;我無法改變它。使用Javascript觸發顯示/隱藏外部嵌入式資源

我需要這個隱藏的輸出,直到用戶單擊顯示。

我有兩個嘗試以實現這一目標:

  1. 如果腳本標籤的隱藏DOM節點的內部處理,它失敗示出了包含節點時顯示。

  2. 如果腳本標籤動態插入jQuery('#parent-element').html('<script...>');那麼它失敗,因爲它需要document.writecannot run asynchronously(沒有辦法告訴其中文件中寫的話)

我需要展示的原因/隱藏按鈕是因爲輸出以全屏疊加顯示(對於普通內容區域而言太大)。

我想的作品一般,所以我的客戶端可以通過嵌入外部SAAS提供的其他「神奇」的HTML塊的解決方案(谷歌,YouTube的...)

+0

請告訴我們代碼。 – Dogbert

+0

爲什麼這需要異步? –

+0

@Asad它不需要是異步的。在嘗試解決方案中(1)它不是異步的;但在嘗試解決方案(2)它是異步的。 – artfulrobot

回答

1

,而不是display:none使用無形的元素(visibility:hidden) 。

display:none表示該元素未呈現爲DOM的一部分。
直到顯示屬性更改爲其他值時才加載它。

visibility:hidden加載元素,但不顯示它。

+0

謝謝,但'可見度:隱藏'不會把它從頁面流中拿出來 - 我會有一個巨大的空白空間的內容。 – artfulrobot

+0

@artulrobot:可以很容易地修復。只需將寬度/高度設置爲零。之後,當您將'visibility'更改爲'visible'時,還要更改大小(100px,999px,無論)。 – RASG

+0

是的,這似乎也工作,謝謝。 – artfulrobot

0

我解決了這個問題,通過絕對定位<script>的父元素並離開視口(css:position:absolute; left:-10000px;)。

然後我做了fixed覆蓋完全分開(即兄弟),默認情況下隱藏。

顯示時,疊加層爲fadeIn() ed,當淡入淡出完成時,屏幕外的內容元素設置爲position:fixed; left: 24px; top: 24px;

在重新隱藏時,內容將被重置爲關閉屏幕,並且覆蓋圖將與​​一起隱藏。

疊加層比內容需要更低的z-index