2014-07-16 60 views
4

長時間潛伏者,第一次海報。JS小書籤不能在IE11中工作

的基本是這樣:

通過this blog post的啓發,我試圖爲我們的QA團隊可以快速填充表單中的書籤。

書籤在Chrome,IE 10和IE 9兼容模式下在我的機器(TM)上完美運行。我測試過的QA團隊的機器的書籤,雖然它適用於他們的Chrome瀏覽器和IE 9精細,書籤不上運行IE 11

詳細兩臺機器的工作:

運行IE 11的兩臺機器中,一臺在Win 7上,另一臺在Win 8.1上。在Win 7上運行IE 11的機器更新爲IE版本11.0.9600.17207IS,並且還會在Chrome中正確運行書籤。

我試過了幾個不同的變化,第一個基於上面提到的CSS-Tricks博客文章。

<a href="javascript: 
    (function(d) { 
     var body = d.getElementsByTagName('body').item(0); 
     var script = d.createElement('script'); 
     script.src = 'https://company.siteurl.com/unrelated/DisclosureRegister.js'; 
     body.appendChild(script); 
    }(window.document)); 
    alert('Bookmarklet js fired!');">Disclosure Register Bookmarklet</a> 

第二,基於一個StackOverflow Response,如下:

<a href="javascript: 
    (function(){ 
     var s=document.createElement('script'); 
     s.type='text/javascript';  
     s.src='https://company.siteurl.com/unrelated/DisclosureRegister.js'; 
     document.getElementsByTagName('head')[0].appendChild(s); 
    }());">Disclosure Register 2</a> 

兩個代碼在前面提到的瀏覽器我的機器上工作,在IE 11既不工作,對其他機器(我不沒有IE 11,不能直接在我的機器上測試)。

我在開發人員工具的控制檯中沒有收到錯誤消息,並且DisclosureRegister.js文件未在開發人員工具的文件列表中列出。看起來,小書籤根本沒有開火。

當我右鍵單擊>屬性時,這兩個bookmarklets都沒有Web Documents選項卡,但是,我提供的簡單的javascript alert小書籤確實具有Web Documents選項卡,並且它在所有瀏覽器(包括IE 11 )。

<a href="javascript:alert('That tickles!');">Click me!</a> 

我通過寫Codepen的HTML,向他們發送電子郵件直接鏈接到Codepen(我沒有足夠的信譽分發布的鏈接),並讓他們從拖動鏈接提供的書籤工具Codepen 輸出到他們的瀏覽器收藏夾欄。

我遇到了一些讓我希望它是IE 11老版本的bug,但是使用的IE版本比修復相關bug的版本更新。

以防萬一有什麼東西在這是造成IE 11中止的JavaScript,我包括該代碼爲好DisclosureRegister.js文件:

(function (win, doc, $, undefined) { 

    //Don't run if jQuery isn't loaded 
    if (typeof window.jQuery === 'undefined') { 
     return; 
    } 

    alert("Script is being called!"); 

    }(window, window.document, window.jQuery)); 

問題:

雖然我當然不排除我的代碼錯誤(當然,如果它是錯誤的請糾正我),是否有什麼特殊的IE 11在處理JavaScript書籤的方式,我需要在代碼中說明?

在此先感謝您的時間!

回答

1

我寫了那篇文章。真的很高興你們發現它很有用。

似乎有一羣人抱怨bookmarklet在IE11中無法正常工作。我要測試的一件事是IE11如何處理相同的原始策略。 Check out this link,並查看您是否可以暫時禁用相同的來源策略。然後測試。

顯然它不會解決問題,但它可能會導致你在正確的方向。

希望能有所幫助。讓我知道。

+0

不幸的是,仍然沒有。我將瀏覽器設置爲允許跨域進行數據訪問,允許第三方Cookie會話支持,以及其他一些設置,希望這可以做到這一點,包括設置允許一對夫婦拖放設置,以防問題出現將鏈接從Codepen輸出窗口拖動到收藏夾欄。沒有工作。 – TiVO25

+0

哇。好的。我會留下任何與IE11相關的東西。對不起,沒有一個簡單的答案。 – Adam

+0

在黑暗中的另一個鏡頭。我使用沒有協議的鏈接,因此它們默認爲頁面。即。 //ajax.googleapis.com,是否有助於添加http://之前? – Adam

1

我想我發現IE11中的bookmarklets有什麼問題。我只是在IE11中添加了一個小書籤,它不起作用,所以我開始使用Google搜索並找到了這個頁面。然後,我在微軟自己的網站上發現了bookmarklets,他們真正推薦使用它並且它可以工作。然後我決定檢查語法是否正確,以及在哪裏發現問題。由於某些原因,IE在通過拖放將其添加到工具欄時削減了長書籤的一部分。我試圖添加的小書籤中有幾個括號缺少原文,因爲它的語法不正確。然後我手動複製粘貼完整的代碼並開始工作。

0

我能夠通過從小書籤代碼中刪除所有換行符來解決相同的問題。 IE 11顯然不知道如何處理它們。

在小書籤代碼中出現換行符後,將其添加到「收藏夾」後,屬性顯示一個空白URL,單擊它時不會發生任何事情。

刪除換行符(運行正則表達式以將所有空格摺疊爲單個空格字符)後,將屬性添加到「收藏夾」後,屬性在URL字段中顯示正確的JavaScript,並在單擊時正確運行。

我無法找到任何記錄此限制的地方。