2012-03-15 6 views
1

にテキストとして挿入変数:私はそれがparam1titleを渡さない機能上に実行すると、それはparam1などを定義する必要があります私はテキストとして、変数を渡すか、何らかの形で動作するように機能上のようにしたいのjavascript

var title = "Hello World"; 
chrome.tabs.executeScript(tabId, {code: "var param1='"+title+"'; var param2='value2'; "}, function(){ /*some code*/ }); 

titletitleは動的なので、それは異なる可能性があるので、私は本当に私のタイトル変数をどのように渡すことができるか知る必要があります。

私はこのようなコードを変更した場合:それは

+0

'tabId'の値は何ですか?また、あなたが知らなかった場合:['chrome.tabs.executeScript'](http://code.google.com/chrome/extensions/tabs.html#method-executeScript)**は**で動作しませんコンテンツスクリプト。 –

+0

私は質問を理解しているかどうかはわかりませんが、これからどのような出力を望んでいるかの例を挙げることはできますか? – jbabey

+0

上記のコードは正常に動作しますが、param1の値は未定義です。 – Jigberto

答えて

1

あなたtitle文字列は引用符、改行やバックスラッシュが含まれている完璧な作品よりも

chrome.tabs.executeScript(tabId, {code: "var param1='Hello World!'; var param2='value2'; "}, function(){ /*some code*/ }); 

を。これらの文字はエスケープする必要があります:

var title = 'Your string was here, with a "quote" etc.'; 

// Escape each special character: 
title = title.replace(/[\\"']/g, '\\$&') /* Backslash and quotes */ 
      .replace(/\n/g, '\\n')  /* Newlines    */ 
      .replace(/\r/g, '\\r')  /* Carriage returns  */ 
      .replace(/\t/g, '\\t')  /* Tabs     */ 
      .replace(/\b/g, '\\f')  /* Backspace   */ 
      .replace(/\f/g, '\\b');  /* Form feed   */ 

chrome.tabs.executeScript(tabId, {code: "var param1='"+title+"'; var param2='value2'; "}, function(){ /*some code*/ }) 
+0

ありがとう....これで私の問題は解決しました。今度はこれについて気をつけます:) – Jigberto

+0

実際にはこの問題は難しいですが、代わりに空白のみのコンパイルを使ってクロージャコンパイラで自分のコードをコンパイルし、その後すべての改行を削除しました。 –

+0

このコードは、実行するためにJavaScriptコードをクリーンアップしようとするとエラーが発生することがあります。改行、キャリッジリターン、バックスペース、フォームフィードを空白文字( "')で置き換えることができます。 –