2011-07-10 17 views
5

, ben bu gibi bazı komut enjekte etmek istiyorum beyan ederiz:Chrome uzantısında, içerik komut dosyaları iframe içinde etkilenemez mi? manifest.json dosyasında

İçerik komut olarak
{ 
    "name": "my extension", 

    "version": "1.0", 

    "background_page": "background.html", 

    "permissions": ["contextMenus", "tabs", "http://*.example.com/*"], 

    "content_scripts": [ 
     { 
      "matches": 
       [ 
       "http://*.taobao.com/*", 
       "http://*.yintai.com/*" 
       ], 
      "run_at": "document_idle", 
      "js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"], 
      "all_frames": true 
     } 
    ] 
} 

, başka şeylerin yanı sıra bir iframe oluşturmak. Şimdiye kadar iyi çalışıyor. Şunun gibi:

$('<div id="my_notifier"></div>').appendTo($('body')).html('<iframe src="http://example.com"></iframe>'); 

sorun, iframe içinde, bu içerik komut bir şey miras değil almaktadır. JQuery'yi kullanmak istersem, iframe içine tekrar eklemek için <script src=... kullanmalıyım.

JQuery'yi tekrar eklememeyi tercih ediyorum çünkü zaten uzantıya ekledim. Kullanıcının, uzantının çalışması için ihtiyaç duyduğu her sayfada jQuery'yi tekrar tekrar indirmesini istemiyorum.

"all_frames": true özniteliğini denedim, ancak çalışmıyor.

Lütfen bildiriniz. Teşekkürler.

Düzenleme:

"content_scripts": [ 
    { 
     "matches": 
      [ 
      "http://*.taobao.com/*", 
      "http://*.yintai.com/*", 
      "http://*.example.com/*" 
      ], 
     "run_at": "document_idle", 
     "js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"], 
     "all_frames": true 
    } 
] 

Ama çalışmıyor: Böyle matches öznitelik için example.com ekledi. Eğer mecbur $, o iş yapmak için

tanımlanmadı:

<!DOCTYPE HTML> 

<html> 
<head> 
    <title>Untitled</title> 
</head> 

<body> 

<div></div> 

<script type="text/javascript"> 
    $('div').html('hi'); 

</script> 

</body> 
</html> 

bir hata olacaktır:

iframe (example.com) içeriği olduğunu söylemek, daha net olmak gerekirse kullanın:

<!DOCTYPE HTML> 

<html> 
<head> 
    <title>Untitled</title> 
</head> 

<body> 

<div></div> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    $('div').html('hi'); 

</script> 

</body> 
</html> 
+0

iframe'i oluşturan 'all_frames' kümesi ve içerik komut dosyanızla tam manifestinizi gösterebilir misiniz? – serg

+0

Tamam, soruyu düzenledim. – Betty

+0

Hey Betty, şimdi Serginin ilk sorunu çözdüğünü, bu sorunun çerçeveye erişmesini beklemek için beklemede bu soruya bir göz atın: http: // stackoverflow.com/questions/4669089/nasıl yapılır-enjekte-bir-iframe-panel-to-google-chrome-uzantısı-ve-add-click-olayı- – Darin

cevap

4

Sen hangi içeriğin komut enjekte etmek listeye iframe'in url http://example.com ekleyip belirtmek gerekir:

"content_scripts": [ 
     { 
      "matches": 
       [ 
       "http://*.taobao.com/*", 
       "http://*.yintai.com/*" 
       ], 
      "run_at": "document_idle", 
      "js": ["jquery-1.5.1.min.js","jquery-ui-1.8.13.custom.min.js", "contentscript.js"] 
     },{ 
      "matches":["http://example.com/*"], 
      "run_at": "document_idle", 
      "js": ["jquery-1.5.1.min.js"], 
      "all_frames": true 
     } 
    ] 
+0

Yolunuzu denedim ve başka bir şekilde, example.com'u "match" özelliğine ekleyerek, ancak şanssız olarak denedim. Düzenlenen soruya bakın. PS: Yeni bir satır almak için enter tuşuna bastım ve yorumun gönderilmesinin şaşırtıcı olduğunu gördüm. >< – Betty

+0

@Betty İstediğiniz şekilde çalışmaz. İçerik komut dosyaları korumalı, normal bir sayfa içinde bir içerik betiği olarak enjekte edilen jquery'ye erişemez. Example.com karesi, uzantınızın bir parçasıysa ve üzerinde tam denetime sahipseniz, javascript'i bu sayfadan bir içerik komut dosyasına taşıyabilir ve jquery ile birlikte enjekte edebilirsiniz. – serg

+0

Teşekkür ederim @serg. Example.com çerçevemin içeriği dinamik olarak oluşturulduğundan uzantıya ekleyemiyorum. Bence bu istediğim şey yapılamaz.

0

istediğiniz komut dosyasını yürütün İç Çerçeveler; Özellikle ve filtrelerini ve karmaşık seçicilerini kullanırsanız jquery işlevlerini kullanın.

İlgili konular