2012-12-28 140 views
1

我能夠使用jcollage(http://radikalfx.com/files/collage-with-text/demo.html)插件將給定文本添加到畫布中,但是當用戶輸入文本如www.example.com時,它應自動轉換爲超鏈接。如何在Canvas中創建超鏈接

有些人請幫助如何確定用戶輸入的文本是超鏈接,以及如何找到超鏈接的位置,因爲我正在將該畫布轉換爲圖像,並在Titanium中的web視圖中顯示,如果用戶點擊了超鏈接,我必須將其轉移到那個頁面。

+0

我想你應該看看這個:[在HTML畫布中創建鏈接](http://stackoverflow.com/questions/6215841/create-links-in-html-canvas)。希望能幫助你。 –

回答

0

這並不像您想象的那麼簡單。

畫布實際上並不「存儲」文本,它只是一個像素網格。它不知道在畫布上繪製的元素或任何東西。因此,畫布不能「超鏈接」文本元素。

其中一個選項是將一個click事件偵聽器添加到畫布,獲取該事件的x/y,如果您點擊文本,則重定向到該URL。爲此,您需要手動跟蹤文本的位置(旋轉?)和大小。

另一種可能更簡單的選擇是簡單地在包含文本的圖像頂部添加一個元素。然後,你可以簡單地添加一個超鏈接。

Working example of a link overlaying the canvas

+0

實際上,我需要使用該畫布圖像在Titanium中創建雜誌應用程序。所以我有很多困惑想進一步進行。 – vvr02

+0

我不能說我知道鈦的任何事情,但我相信最簡單的事情是覆蓋實際文字,然後... – Cerbrus

+0

感謝例如,我會看看它。 – vvr02

-1

這是不可能的。

爲了創建一個「超鏈接」,您必須創建自己的盒子,填充文本,保留其位置標籤(以3D形式 - 確保它不被另一圖層覆蓋),樣式以特定格式顯示文本,然後檢查以確保如果某人點擊畫布,並且點擊發生在框上,並且該框是最頂層,那麼您將用戶的window.location設置爲等於他們輸入的任何內容(如果您確認它的確是一個正確編寫的URL)。

+0

你自相矛盾。首先,你說「這不可能」,然後你解釋如何去做。 – Cerbrus

+0

@Cerbrus「超鏈接」實際上是一個DOM嵌入的用戶可點擊的對象,根本不可能。您必須手動創建和維護一個虛擬的,不在DOM的JS對象,並對其進行視頻遊戲式的碰撞/選擇檢測。這與'link'格外相距甚遠。在狀態變化下進行編程(例如增加下劃線或改變顏色懸停/點擊/訪問的鏈接)將變得很愚蠢 - 將所有功能鎖定。您還必須根據碰撞檢測開始管理畫布的CSS,以獲取指針... – Norguard

+0

這是可能的。簡單,均勻。 'link'< - 鏈接的位置將畫布覆蓋在所需的位置,並且瞧!畫布頂部的可點擊超鏈接。 – Cerbrus