爲什麼以下JavaScript腳本會打開一個新窗口,但無法向下滾動頁面? (請注意,我在Firefox 4運行此腳本的Web控制檯)在JavaScript中,如何在新的瀏覽器窗口中打開頁面並滾動到特定位置?
w=window.open("http://stackoverflow.com");w.scrollTo(0,150);
我如何在一個新的瀏覽器窗口中打開一個網頁,並指示該窗口滾動到一個特定的位置?
爲什麼以下JavaScript腳本會打開一個新窗口,但無法向下滾動頁面? (請注意,我在Firefox 4運行此腳本的Web控制檯)在JavaScript中,如何在新的瀏覽器窗口中打開頁面並滾動到特定位置?
w=window.open("http://stackoverflow.com");w.scrollTo(0,150);
我如何在一個新的瀏覽器窗口中打開一個網頁,並指示該窗口滾動到一個特定的位置?
如果您擁有兩個域,則可以使用window.postMessage將滾動位置與其他窗口進行通信。
在一個頁面中,您創建postMessage,在另一個頁面中添加一個事件偵聽器。
如果您需要支持較舊的瀏覽器,則可以使用window.name在窗口之間傳輸一些數據。
如果您沒有擁有這兩個域名,則由於SOP而失敗。 這是瀏覽器中的一項內置保護措施,可避免跨域濫用。
您正試圖在窗口準備好之前進行滾動。請注意以下工作:
w=window.open("http://stackoverflow.com");
setTimeout(function() { w.scrollTo(0,150) }, 1000);
這將是最好的w.onload
或DOM ready函數執行滾動,但我似乎無法得到那個工作。
這對我也不起作用。如果不是設置超時值,它也不會工作,我只需等幾秒鐘,然後調用'w.scrollTo()'。瀏覽器抱怨,「錯誤:權限拒絕訪問屬性'scrollTo'」。 – 2011-05-18 19:34:02
有趣的是,它在Chrome中適用於我。我會在FF中做更多的測試。 – mVChr 2011-05-18 19:49:13
雖然文章已超過六年,但http://www.leftontheweb.com/message/ErroruncaughtexceptionPermissiondeniedtogetproperty可能會解釋爲什麼這不起作用。如何繞過這種跨域安全性來進行無害操作,如滾動? – 2011-05-18 19:52:58
該腳本不起作用,因爲它違反了跨域安全性。見this和this。 Chrome的報告類似的錯誤:
> w=window.open("http://stackoverflow.com");
DOMWindow
84Unsafe JavaScript attempt to access frame with URL http://stackoverflow.com/ from frame with URL chrome://newtab/. Domains, protocols and ports must match.
> w.scrollTo(0,150);
89Unsafe JavaScript attempt to access frame with URL http://stackoverflow.com/ from frame with URL chrome://newtab/. Domains, protocols and ports must match.
TypeError: Object [object DOMWindow] has no method 'scrollTo'
我發現了一些在這個有趣的...
我一直都知道,你可以滾動到具有名稱的錨 - 事實上,這就是我們的方式所有的教導。但我只是試着滾動到一個ID與一個ID和它的工作!
因此,例如,如果目標網頁的ID爲「bobo」,那麼鏈接http://www.example.com/index.php/home#bobo只適用於我。
也許這是我的目的片狀行爲。如果可能的話,我覺得我以前會聽說過。但我所知道的是我正在嘗試做同樣的事情,無論出於何種原因,它都在起作用。
FWIW,我使用的鏈接是http://www.religionnews.com/index.php?/rnsblog#blog
德里克是關於跨域安全阻止你這樣做是正確的。因此,一個答案是通過加載Chrome禁用域安全性: Chrome --disable-web-security 從這個chrome實例運行您的javascript。子窗口將繼承負載開關,您的scrollTo現在可以工作。
翻譯爲:「加載關閉了網絡安全的Chrome。」首先,OP說他正在使用Firefox。其次,他不問如何去做測試 - 他問的是如何在面向客戶的網站上使用它(假設);如果客戶端沒有Chrome,那麼更好呢,爲什麼在禁用Web安全的客戶端計算機上啓動Chrome會是一個好主意?另外,是否有可能從javascript中啓動Chrome的一個實例(甚至沒有設置該標誌)? – newfurniturey 2012-10-29 02:13:07
在窗口上下文之外運行的腳本是否屬於相同的安全限制?例如,Firefox的會話管理器擴展可以在新選項卡中打開頁面並滾動到該頁面中的任意位置。 – 2011-05-18 20:38:06
我不認爲瀏覽器擴展是在一個域下,你在本地安裝,就是這樣。 – Mic 2011-05-18 21:05:52