In addition to the above options, you could also use Node-Webkit
which ships the node.js + chrome engine.
Performs as a normal program, but looks like a Browser, limited only to the application you want to display.
This way you can control both the javascript client when backend in C ++ and package everything as one application only. The only limitation is that your user would have to install the executable, but if that's not a problem, I think it's the option that gives you the most flexibility with the least possible headache compared to Nacl (learning overhead) or Emscripten (runtime overhead)