2013-04-22 38 views
28

Tôi đang nỗ lực để tạo tiện ích mở rộng của Chrome cho tiện ích cắt ảnh. Mã của popup.html của tôi là như sau:Chrome hiển thị lỗi là: Từ chối thực thi tập lệnh nội tuyến vì Nội dung-Bảo mật-Chính sách

<body> 
      <textarea id="widget_script" style="border:1px solid #ccc;padding:5px;width:600px" rows="5" readonly></textarea> 
      <script type="text/javascript"> 
       var protocol=window.location.protocol; 
       var host= window.location.host; 
       var head=('<div id="wd_id" style="margin-bottom: 20px;"></div> 
       <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></\script> 
       <script type="text/javascript" src="'+protocol+'//'+host+'Image_crop/cropimages/img_crop_widget.js'+'"><\/script> 
       <script type="text/javascript">init_widget()<\/script>'); 
       document.getElementById("widget_script").innerHTML=head; 
      </script> 
    </body> 

Các biến giao thứcchủ mất giao thứcchủ từ URL trong trình duyệt. Khi tôi cố gắng tích hợp tiện ích này dưới dạng tiện ích của Chrome, tiện ích này không hoạt động. Khi nó hoạt động hoàn hảo, nó sẽ hiển thị mã sau trong textarea:

<div id="wd_id" style="margin-bottom: 20px;"></div> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript" src="http://localhost/cropimages/img_crop_widget.js"></script> 
<script type="text/javascript">init_widget()</script> 

Tôi có điều vài điều như, đặt mã JS trong tập tin JS bên ngoài và và cũng kêu gọi các tập tin trong manifest.json gọi nó trong popup.html của tôi, nhưng không làm việc.

Bất cứ ai có thể cho tôi biết tôi đang làm gì sai hay tôi nên cố gắng làm gì để làm việc đó?

Cảm ơn trước ...

+1

Bạn cần phải đặt tất cả các mã trong một tệp bên ngoài. Bạn không thể có bất kỳ mã nội tuyến nào. – BeardFist

Trả lời

56

Từ Chrome extension CSP docs:

Inline JavaScript sẽ không được thực thi. Giới hạn này cấm cả hai khối nội tuyến <script> và trình xử lý sự kiện nội tuyến (ví dụ: <button onclick="...">).

Bạn không thể có kịch bản nội tuyến trong HTML mở rộng của bạn như:

<script>alert("I'm an inline script!");</script> 

<button onclick="alert('I am an inline script, too!')"> 

Thay vào đó, bạn phải đặt kịch bản của bạn thành một file riêng biệt:

<script src="somescript.js"></script> 
+0

Làm cách nào để gọi "cảnh báo" trong "somescript.js" từ nút html? – zezba9000

+1

Không bao giờ được tìm thấy: https://developer.chrome.com/extensions/tut_migration_to_manifest_v2#inline_scripts – zezba9000

Các vấn đề liên quan