javascript - kan inte se en variabel från Chrome-konsolen men den är tillgänglig i koden
Varför är en variabel åtkomlig från en metod men inte från webbläsarkonsolen?
Jag har följande TypeScript-kod, som använder Angular6, körs via ng serve på Windows 10, nuvarande Chrome.
import * as d3 from "d3"; // from "npm i d3 --save" version 5.7
// picking a member of d3, nothing magical about "scaleLinear" here
console.log("see", d3.scaleLinear) // it prints ok, ƒ linear() {...
// angular component code fragment below
somefunction() {
console.log("see again", d3.scaleLinear) // it prints ok, again
// add a break here
}
Jag kör koden till den där somefunction. Vid paus, i Chrome-konsolen när jag försöker:
> console.log(d3.scaleLinear)
det ger ett fel:
VM2012:1 Uncaught ReferenceError: d3 is not defined
at eval (eval at push../src/app/user-sel/user-sel.component.ts.UserSelComponent._resyncYSel (user-sel.component.ts:58), <anonymous>:1:13)
at UserSelComponent.push../src/app/user-sel/user-sel.component.ts.UserSelComponent._resyncYSel (user-sel.component.ts:58)
at UserSelComponent.push../src/app/user-sel/user-sel.component.ts.UserSelComponent.selYSel (user-sel.component.ts:166)
at Object.eval [as handleEvent] (UserSelComponent.html:75)
at handleEvent (core.js:21673)
at callWithDebugContext (core.js:22767)
at Object.debugHandleEvent [as handleEvent] (core.js:22470)
at dispatchEvent (core.js:19122)
at core.js:19569
at HTMLSpanElement.<anonymous> (platform-browser.js:993)
Hur kan jag komma åt d3 direkt i konsolen? Vad missade jag? Jag tittade på gamla SO-frågor om detta ämne 52332640 men kunde inte hitta ett slutgiltigt svar.
Svar #1
Om dina sidor har några ramar kan din konsol köras i fel sammanhang. Det finns en rullgardinsmeny som gör att du kan specificera rätt sammanhang
Till exempel, i den här skärmdumpen finns det två IFrame-element. För att kunna komma åt variabler från skript som körs i "contentIframe2" måste jag byta kontext
