I know this is an old thread, but the selected answer isn't clear enough for me.

The point is the delete operator removes a property from an object. It cannot remove a variable. So the answer to the question depends on how the global variable or property is defined.

(1) If it is created with var, it cannot be deleted.

For example:

var g_a = 1; //create with var, g_a is a variable 
delete g_a; //return false
console.log(g_a); //g_a is still 1

(2) If it is created without var, it can be deleted.

g_b = 1; //create without var, g_b is a property 
delete g_b; //return true
console.log(g_b); //error, g_b is not defined

Technical Explanation

1. Using var

In this case the reference g_a is created in what the ECMAScript spec calls "VariableEnvironment" that is attached to the current scope - this may be the a function execution context in the case of using var inside a function (though it may be get a little more complicated when you consider let) or in the case of "global" code the VariableEnvironment is attached to the global object (often window).

References in the VariableEnvironment are not normally deletable - the process detailed in ECMAScript 10.5 explains this in detail, but suffice it to say that unless your code is executed in an eval context (which most browser-based development consoles use), then variables declared with var cannot be deleted.

2. Without Using var

When trying to assign a value to a name without using the var keyword, Javascript tries to locate the named reference in what the ECMAScript spec calls "LexicalEnvironment", and the main difference is that LexicalEvironments are nested - that is a LexicalEnvironment has a parent (what the ECMAScript spec calls "outer environment reference") and when Javscript fails to locate the reference in a LexicalEenvironment, it looks in the parent LexicalEnvironment (as detailed in 10.3.1 and 10.2.2.1). The top level LexicalEnvironment is the "global environment", and that is bound to the global object in that its references are the global object's properties. So if you try to access a name that was not declared using a var keyword in the current scope or any outer scopes, Javascript will eventually fetch a property of the window object to serve as that reference. As we've learned before, properties on objects can be deleted.

Notes

  1. It is important to remember that var declarations are "hoisted" - i.e. they are always considered to have happened in the beginning of the scope that they are in - though not the value initialization that may be done in a var statement - that is left where it is. So in the following code, a is a reference from the VariableEnvironment and not the window property and its value will be 10 at the end of the code:

    function test() { a = 5; var a = 10; }

  2. The above discussion is when "strict mode" is not enabled. Lookup rules are a bit different when using "strict mode" and lexical references that would have resolved to window properties without "strict mode" will raise "undeclared variable" errors under "strict mode". I didn't really understand where this is specified, but its how browsers behave.

 

jQuery에서 for, while 문과 비슷한 역할을 하는 each 메소드 사용 시

break, continue와 같은 프로세스를 수행해야 할 때가 있다.

 

그럴 때 return true;continue와 같은 역할을, return false; break와 같은

역할을 수행한다.

 

예제 >>

 

$('#loop').each ( function() {

  if ( i==0 ) return true; // continue;

  else return false; // break;

} );

 

 

출처 :http://dhplanner.blogspot.kr/2009/06/jquery-each-%EB%A9%94%EC%86%8C%EB%93%9C-%EC%82%AC%EC%9A%A9%EC%8B%9C-break-continue-%EC%82%AC%EC%9A%A9.html

밴드 공유하기를 구현할때, 제목 내용 이미지를 넣고 싶었지만 아무리 공유하기를 눌러도 전달되지 않았다.

 

window.open("http://www.band.us/plugin/share?body="+encodeURIComponent($("#docTitle").val() + "-" + $("#docAuthor").val())+encodeURIComponent("\n")+encodeURIComponent($("#docShortUrl").val())+"&route="+location.href, "share_band", "width=410, height=540, resizable=no");

 

(JSTL구문이 섞여있다...) 어쨋거나 body 파라미터에 제목\n주소 식으로 전달을 하면

밴드에 공유하기에 카드가 생긴다. 아래 주소에서 테스트해볼수 잇다.

 

이미지의 mimetype를 image/* 로 주어야 한다.(각 확장자에 맞게)

그리고 og:title 및 og:url og:description og:type 등을 작성해주면 된다.

 

http://developers.band.us/developers/ko/docs/share/debugger 

(밴드 공유하기 시 결과 테스트)

 

 

 

공유하기를 눌러 보았다.

 

 

 

잘 된다.ㅋ 처음에 이미지가 안뜨는 상태에서 문제 수정을 한뒤에 테스트를 해도 이미지가 안뜨는데,

캐슁이 되어서 그럴수 있다. 위의 debugger 페이지에서 expire cache에 체크를 하고 show를 누르면 갱신된다.

 

 

  1. 안녕하세요. 2016.05.27 13:38

    안녕하세요. 네이버 밴드에서 위와같이 작업을 하였으나 첫번째 밴드 화면에서 하단에 작은 썸네일 이미지가 엄청 확대 돼서 나오는게 해결 방법을 알수 있을까요..? 이미지 출력은 되는데
    확대가 너무 심합니다.. 도움 부탁드립니다.

  2. Huzy Huzy 2016.06.13 19:09 신고

    첫번째화면은 밴드 스니핏화면인데.. 이해를 못햇네요

<script type="text/javascript">
    $
(function () {
        $
("#datepicker").datepicker({
            constrainInput
: true,
            showOn
: 'button',
            buttonText
: 'Select...'
       
});
   
});
</script>
<input id="datepicker" disabled="disabled" />

 

위와같이 할 경우 datepicker input 옆에 버튼이 생성된다. 이 버튼의 class는 ui-datepicker-trigger 를 가지므로 스타일시트에서 자신의 기호에 맞게 이미지를 배경으로 깔든 편하게 쓰면 된다.

자바스크립트에서 숫자를 표기할때 3자리마다 콤마를 찍어줘야 할 때가 있다 자주 사용하는 기능인데 매번 만들기란 여간 귀찮은게 아니다.

콤마찍기

 

1
2
3
4
5
//콤마찍기
function comma(str) {
    str = String(str);
    return str.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, '$1,');
}

콤마풀기

 

1
2
3
4
5
//콤마풀기
function uncomma(str) {
    str = String(str);
    return str.replace(/[^\d]+/g, '');
}

 

복사 붙여넣기로 사용하자!

input box에서 사용자 입력시 바로 콤마를 찍어주기 위한 함수도 추가 한다.

 

1
2
3
4
5
function inputNumberFormat(obj) {
    obj.value = comma(uncomma(obj.value));
}
 
//<input type="text" onkeyup="inputNumberFormat(this)" />

 

 

출처 : http://blog.munilive.com/javascript-comma-uncomma/

페이스북 developer 에서 app을 새로 생성하면 주는 key를 입력해주면 된다.

 

You wanted to have Facebook Like Button or Facebook Like Box and other Facebook social plugins on your website. You copy pasted to code Facebook generated for you on your web pages. If you do not have an App ID when you copied this, chances are the Facebook script will complain in your Web Browser’s console (e.g Firebug Console).

Invalid App Id: Must be a number or numeric string representing the application id.
FB.getLoginStatus() called before calling FB.init().
 
all.js#xfbml=1 (line 56)

To fix this issue, just do a “Create New App” in the Apps section in Facebook. And then go back to the Facebook Social Plugins page, pick a plugin, and regenerate the code for it.

Your Facebook plugin code before having an App ID:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

After you have assigned an App to the plugin

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=<your-16-digit-app-id>";  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

Notice the difference in the highlighted code? Let me know if this solved your problem in the comment area.

<html>
<head>
<style>
div { position: relative; }
</style>


<script>
var initBody;

function beforePrint()
{
initBody=document.body.innerHTML;
document.body.innerHTML=idPrint.innerHTML;
}

function afterPrint()
{
document.body.innerHTML=initBody;
}



window.onbeforeprint = beforePrint;
window.onafterprint = afterPrint;

</script>


</head>
<body>
<div id="idPrint">
<b>[첫 번째 영역]</b><br>첫 번째 영역입니다!<br><br>
</div>
<b>[두 번째 영역]</b><br>두 번째 영역입니다!<br><br>
<b>[세 번째 영역]</b><br>세 번째 영역입니다!<br>

<input type="button" onclick="window.print()" value="첫번째 영역만 인쇄">

[출처] http://blog.naver.com/masca727/60038165332
</body>
</html>

 

iBook 에서 이미지를 클릭 했을때 동적으로 div를 생성하고 그 안에 background-image 스타일 지정을 해주었으나 도통 빈 칸만 뜨고 이미지가 출력되지 않았다.

 

콘솔로그를 찍어볼 수 없는 거지같은 테스트환경이어서 html 마크업으로 일일히 확인해본 결과 이미지를 불러올때 ibooksimg:// 라는 프로토콜을 사용해야 하지만 ibooks:// 로 불러오면서 이미지가 출력되지 않은 것이었다.

 

var str = $("img").get(0).src;

str = str.replace("ibooks://", "ibooksimg://");

 

로 간단히 replace 치환처리 하니 정상 출력되었다.

+ Recent posts