2012-03-17 3 views
0

Greasemonkey를 사용하여 웹 페이지에 일부 자바 스크립트 코드를 주입하려고합니다. 먼저 나는 무엇이 효과가 있는지 시작할 것입니다.Javascript에서 이러한 중첩 된 따옴표를 사용하는 방법?

var script = document.createElement('script'); 
script.src = "http://code.jquery.com/jquery.min.js"; 
$("#navHome").append(script); 

var buttonCode ='<input type="button" value="Make public" onclick="var selector=\'div.timelineTimestamp\'; $(selector).each(function() { var textToAppend=\' <input type=\\\'button\\\' value=\\\'Make Public\\\' > \'; $(this).append(textToAppend) });">' 


$("#navHome").append(buttonCode); 

단추를 누를 때 경고가 표시되도록 buttonCode의 줄을 변경하려고합니다. 하지만 경고 메시지를 삽입하려면 한 단계 더 높은 수준을 따옴표로 묶어야하며, 제대로 작동 할 수있는 방법을 찾을 수 없습니다.

는 다음

onclick=\\\'alert(\\\\\'hi\\\\\')\\\' 

를 삽입하는 것입니다하지만 여전히 작동하지 않습니다 내가이 작업을 얻을 수 있습니다 닫습니다. 어떻게 할 수 있습니까?

+3

당신이 JQuery와 바인드 이벤트 대신 인라인 코드를 사용하는 경우는, 이런 식으로 코드를 작성하지 말아야 ... – Fox32

+0

또한, 당신이 jQuery를 가지고 있다면, 당신은 왜 다시 포함합니까? 당신은 아마 필요가 없습니다. – vrutberg

+0

바인딩이 작동할까요? 나는 Greasemonkey 방법이 외부로부터 보호되고 접근 할 수 없다고 생각한다. –

답변

2
당신은 다음과 같이 대신 jQuery를 사용하여 요소를 구축하려고한다

: 및 선언 내부

$("#navHome").append($("<script />").attr("src", "http://code.jquery.com/jquery.min.js")); 

var buttonCallback = function() { 
    // your callback code goes here... 
}; 

$("#navHome").append($("<input />").attr("type", "button").val("Make public").bind("click", buttonCallback)); 
+0

그건 작동하지 않았다. $ ("

0
var buttonCode ="<input type=\"button\" value=\"Make public\" onclick=\"var selector='div.timelineTimestamp'; $(selector).each(function() { var textToAppend=' <input type=\"button\" value=\"Make Public\" > '; $(this).append(textToAppend) });\">"; 

통지를 어디에서 시작과 내가 '으로'대체 VAR 선언의 끝에서 난 \ "

+0

작동하지 않았습니다. –

2

귀하의 스크립트에 이미 @require 지시어가 있습니다. 그렇지 않으면 $("#navHome").append(script);이 작동하지 않습니다.

따라서 대상 페이지에 jQuery를 삽입하지 마십시오. 모든 것을 샌드 박스에 보관하십시오. 더 적은 합병증으로 더 빨리 달릴 것입니다. 그 <script> 부분을 모두 잃고 그냥 사용

$("#navHome").append ('<button id="makePublicBtn">Make public</button>'); 

$("#makePublicBtn").click (function() { 
    var selector = 'div.timelineTimestamp'; 
    $(selector).each (function() { 
     var textToAppend ='<input type="button" value="Make Public">'; 
     $(this).append (textToAppend); 
    }); 
}); 

참고 :이 형태의 일부이며 값이 전송하지 않으려면, 버튼에 대한 <button>를 사용합니다.

+0

버튼에 바인딩하는 것보다 나은가요? –

+0

무슨 뜻인지 확실하지 않습니다. 이 대답과 vrutberg는'click' 이벤트를 버튼 (또는 )에 바인딩합니다. 유일한 차이점은이 대답은 다루기 힘들고 불필요한 jQuery를 대상 페이지에 삽입하지 않아도된다는 것입니다. –

0
var script = document.createElement('script'); 
script.src = "http://code.jquery.com/jquery.min.js"; 




$("#navHome").append(script); 

var buttonCode ="<input type=\"button\" id=\"btnID\" value=\"Make public\" >"; 


$("#navHome").append(buttonCode); 

$('#btnID').live('click',function(){ // get click event on dynamically created element 
    $('div.timelineTimestamp').each(function() { 
     var textToAppend= "<input type=\"button\" value=\"Make Public\" > "; 
     $(this).append(textToAppend) ; 
     }); 
}); 
관련 문제